@@ -135,18 +135,19 @@ vgetargs1(PyObject *args, char *format, va_list *p_va, int compat)
135135 if (max == 0 ) {
136136 if (args == NULL )
137137 return 1 ;
138- sprintf (msgbuf , "%.200s%s takes no arguments" ,
139- fname == NULL ? "function" : fname ,
140- fname == NULL ? "" : "()" );
138+ PyOS_snprintf (msgbuf , sizeof (msgbuf ),
139+ "%.200s%s takes no arguments" ,
140+ fname == NULL ? "function" : fname ,
141+ fname == NULL ? "" : "()" );
141142 PyErr_SetString (PyExc_TypeError , msgbuf );
142143 return 0 ;
143144 }
144145 else if (min == 1 && max == 1 ) {
145146 if (args == NULL ) {
146- sprintf (msgbuf ,
147- "%.200s%s takes at least one argument" ,
148- fname == NULL ? "function" : fname ,
149- fname == NULL ? "" : "()" );
147+ PyOS_snprintf (msgbuf , sizeof ( msgbuf ) ,
148+ "%.200s%s takes at least one argument" ,
149+ fname == NULL ? "function" : fname ,
150+ fname == NULL ? "" : "()" );
150151 PyErr_SetString (PyExc_TypeError , msgbuf );
151152 return 0 ;
152153 }
@@ -173,15 +174,16 @@ vgetargs1(PyObject *args, char *format, va_list *p_va, int compat)
173174
174175 if (len < min || max < len ) {
175176 if (message == NULL ) {
176- sprintf (msgbuf ,
177- "%.150s%s takes %s %d argument%s (%d given)" ,
178- fname == NULL ? "function" : fname ,
179- fname == NULL ? "" : "()" ,
180- min == max ? "exactly"
181- : len < min ? "at least" : "at most" ,
182- len < min ? min : max ,
183- (len < min ? min : max ) == 1 ? "" : "s" ,
184- len );
177+ PyOS_snprintf (msgbuf , sizeof (msgbuf ),
178+ "%.150s%s takes %s %d argument%s "
179+ "(%d given)" ,
180+ fname == NULL ? "function" : fname ,
181+ fname == NULL ? "" : "()" ,
182+ min == max ? "exactly"
183+ : len < min ? "at least" : "at most" ,
184+ len < min ? min : max ,
185+ (len < min ? min : max ) == 1 ? "" : "s" ,
186+ len );
185187 message = msgbuf ;
186188 }
187189 PyErr_SetString (PyExc_TypeError , message );
@@ -222,6 +224,7 @@ seterror(int iarg, char *msg, int *levels, char *fname, char *message)
222224 if (PyErr_Occurred ())
223225 return ;
224226 else if (message == NULL ) {
227+ /* XXX snprintf */
225228 if (fname != NULL ) {
226229 sprintf (p , "%.200s() " , fname );
227230 p += strlen (p );
@@ -294,19 +297,20 @@ converttuple(PyObject *arg, char **p_format, va_list *p_va, int *levels,
294297
295298 if (!PySequence_Check (arg ) || PyString_Check (arg )) {
296299 levels [0 ] = 0 ;
297- sprintf (msgbuf ,
298- toplevel ? "expected %d arguments, not %.50s" :
299- "must be %d-item sequence, not %.50s" ,
300- n , arg == Py_None ? "None" : arg -> ob_type -> tp_name );
300+ PyOS_snprintf (msgbuf , sizeof (msgbuf ),
301+ toplevel ? "expected %d arguments, not %.50s" :
302+ "must be %d-item sequence, not %.50s" ,
303+ n ,
304+ arg == Py_None ? "None" : arg -> ob_type -> tp_name );
301305 return msgbuf ;
302306 }
303307
304308 if ((i = PySequence_Size (arg )) != n ) {
305309 levels [0 ] = 0 ;
306- sprintf (msgbuf ,
307- toplevel ? "expected %d arguments, not %d" :
308- "must be sequence of length %d, not %d" ,
309- n , i );
310+ PyOS_snprintf (msgbuf , sizeof ( msgbuf ) ,
311+ toplevel ? "expected %d arguments, not %d" :
312+ "must be sequence of length %d, not %d" ,
313+ n , i );
310314 return msgbuf ;
311315 }
312316
@@ -366,7 +370,9 @@ converterr(char *expected, PyObject *arg, char *msgbuf)
366370{
367371 assert (expected != NULL );
368372 assert (arg != NULL );
369- sprintf (msgbuf , "must be %.50s, not %.50s" , expected ,
373+ /* XXX use snprintf? */
374+ sprintf (msgbuf ,
375+ "must be %.50s, not %.50s" , expected ,
370376 arg == Py_None ? "None" : arg -> ob_type -> tp_name );
371377 return msgbuf ;
372378}
@@ -1129,15 +1135,16 @@ vgetargskeywords(PyObject *args, PyObject *keywords, char *format,
11291135 are not included in the "%d given" part of the message */
11301136 if (len < min || max < len ) {
11311137 if (message == NULL ) {
1132- sprintf (msgbuf ,
1133- "%.200s%s takes %s %d argument%s (%d given)" ,
1134- fname == NULL ? "function" : fname ,
1135- fname == NULL ? "" : "()" ,
1136- min == max ? "exactly"
1137- : len < min ? "at least" : "at most" ,
1138- len < min ? min : max ,
1139- (len < min ? min : max ) == 1 ? "" : "s" ,
1140- len );
1138+ PyOS_snprintf (msgbuf , sizeof (msgbuf ),
1139+ "%.200s%s takes %s %d argument%s "
1140+ "(%d given)" ,
1141+ fname == NULL ? "function" : fname ,
1142+ fname == NULL ? "" : "()" ,
1143+ min == max ? "exactly"
1144+ : len < min ? "at least" : "at most" ,
1145+ len < min ? min : max ,
1146+ (len < min ? min : max ) == 1 ? "" : "s" ,
1147+ len );
11411148 message = msgbuf ;
11421149 }
11431150 PyErr_SetString (PyExc_TypeError , message );
0 commit comments