]> granicus.if.org Git - python/commitdiff
Use PyOS_snprintf() at some cost even though it was correct before.
authorJeremy Hylton <jeremy@alum.mit.edu>
Wed, 28 Nov 2001 21:46:59 +0000 (21:46 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Wed, 28 Nov 2001 21:46:59 +0000 (21:46 +0000)
seterror() uses a char array and a pointer to the current position in
that array.  Use snprintf() and compute the amount of space left in
the buffer based on the current pointer position.

Python/getargs.c

index b7bbb5a80af26671a39a00571a29b5f265895f78..8c4b039c2a4494b9c3b1dad35232667b38d58151 100644 (file)
@@ -224,26 +224,27 @@ seterror(int iarg, char *msg, int *levels, char *fname, char *message)
        if (PyErr_Occurred())
                return;
        else if (message == NULL) {
-               /* XXX snprintf */
                if (fname != NULL) {
-                       sprintf(p, "%.200s() ", fname);
+                       PyOS_snprintf(p, sizeof(buf), "%.200s() ", fname);
                        p += strlen(p);
                }
                if (iarg != 0) {
-                       sprintf(p, "argument %d", iarg);
+                       PyOS_snprintf(p, sizeof(buf) - (buf - p),
+                                     "argument %d", iarg);
                        i = 0;
                        p += strlen(p);
                        while (levels[i] > 0 && (int)(p-buf) < 220) {
-                               sprintf(p, ", item %d", levels[i]-1);
+                               PyOS_snprintf(p, sizeof(buf) - (buf - p),
+                                             ", item %d", levels[i]-1);
                                p += strlen(p);
                                i++;
                        }
                }
                else {
-                       sprintf(p, "argument");
+                       PyOS_snprintf(p, sizeof(buf) - (buf - p), "argument");
                        p += strlen(p);
                }
-               sprintf(p, " %.256s", msg);
+               PyOS_snprintf(p, sizeof(buf) - (buf - p), " %.256s", msg);
                message = buf;
        }
        PyErr_SetString(PyExc_TypeError, message);