]> granicus.if.org Git - python/commitdiff
sprintf -> PyOS_snprintf in some "obviously safe" cases.
authorTim Peters <tim.peters@gmail.com>
Wed, 28 Nov 2001 20:27:42 +0000 (20:27 +0000)
committerTim Peters <tim.peters@gmail.com>
Wed, 28 Nov 2001 20:27:42 +0000 (20:27 +0000)
Also changed <>-style #includes to ""-style in some places where the
former didn't make sense.

15 files changed:
Demo/pysvr/pysvr.c
Modules/_hotshot.c
Modules/_localemodule.c
Modules/_testcapimodule.c
Modules/_tkinter.c
Modules/arraymodule.c
Modules/flmodule.c
Modules/gdbmmodule.c
Modules/pcremodule.c
Modules/posixmodule.c
Modules/pyexpat.c
Modules/readline.c
Modules/socketmodule.c
Modules/stropmodule.c
Objects/stringobject.c

index 99d7b078188d01f3332ca0cbbbce64fc31761bf9..50a122c24dd1aace1534f35f9d14022209686f84 100644 (file)
@@ -25,7 +25,7 @@ can log in on your machine.  Use with caution!
    Python.h defines a typedef destructor, which conflicts with pthread.h.
    So Python.h must be included after pthread.h. */
 
-#include <Python.h>
+#include "Python.h"
 
 extern int Py_VerboseFlag;
 
@@ -364,6 +364,7 @@ static void
 ps(void)
 {
        char buffer[100];
-       sprintf(buffer, "ps -l -p %d </dev/null | tail +2l\n", getpid());
+       PyOS_snprintf(buffer, sizeof(buffer),
+                     "ps -l -p %d </dev/null | tail +2l\n", getpid());
        system(buffer);
 }
index 3b8d616e96cab374b7f0f5f7c0232eafd347bb50..deaf9ddd6c8242cdba09a03d1f450c90e5155876 100644 (file)
@@ -2,11 +2,11 @@
  * This is the High Performance Python Profiler portion of HotShot.
  */
 
-#include <Python.h>
-#include <compile.h>
-#include <eval.h>
-#include <frameobject.h>
-#include <structmember.h>
+#include "Python.h"
+#include "compile.h"
+#include "eval.h"
+#include "frameobject.h"
+#include "structmember.h"
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -1452,12 +1452,12 @@ write_header(ProfilerObject *self)
         pack_add_info(self, "executable-version", buffer);
 
 #ifdef MS_WIN32
-    sprintf(cwdbuffer, "%I64d", frequency.QuadPart);
+    PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%I64d", frequency.QuadPart);
     pack_add_info(self, "reported-performance-frequency", cwdbuffer);
 #else
-    sprintf(cwdbuffer, "%lu", rusage_diff);
+    PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%lu", rusage_diff);
     pack_add_info(self, "observed-interval-getrusage", cwdbuffer);
-    sprintf(cwdbuffer, "%lu", timeofday_diff);
+    PyOS_snprintf(cwdbuffer, sizeof(cwdbuffer), "%lu", timeofday_diff);
     pack_add_info(self, "observed-interval-gettimeofday", cwdbuffer);
 #endif
 
index 61a5c7c883f1753142623b3942a474804946abdc..d96a96784d90c43570a31ea9874c56248b826508 100644 (file)
@@ -376,7 +376,7 @@ PyLocale_getdefaultlocale(PyObject* self, PyObject* args)
     if (!PyArg_NoArgs(args))
         return NULL;
 
-    sprintf(encoding, "cp%d", GetACP());
+    PyOS_snprintf(encoding, sizeof(encoding), "cp%d", GetACP());
 
     if (GetLocaleInfo(LOCALE_USER_DEFAULT,
                       LOCALE_SISO639LANGNAME,
index 01e103bd6d771ad407c11458c5dac9b1bd5bdc51..0f5fa7c5d17ec80cd23b36a780af13630925faa8 100644 (file)
@@ -19,7 +19,7 @@ raiseTestError(const char* test_name, const char* msg)
        if (strlen(test_name) + strlen(msg) > sizeof(buf) - 50)
                PyErr_SetString(TestError, "internal error msg too large");
        else {
-               sprintf(buf, "%s: %s", test_name, msg);
+               PyOS_snprintf(buf, sizeof(buf), "%s: %s", test_name, msg);
                PyErr_SetString(TestError, buf);
        }
        return NULL;
@@ -36,7 +36,8 @@ sizeof_error(const char* fatname, const char* typename,
         int expected, int got)
 {
        char buf[1024];
-       sprintf(buf, "%.200s #define == %d but sizeof(%.200s) == %d",
+       PyOS_snprintf(buf, sizeof(buf), 
+               "%.200s #define == %d but sizeof(%.200s) == %d",
                fatname, expected, typename, got);
        PyErr_SetString(TestError, buf);
        return (PyObject*)NULL;
index eedb0c1008c8814d5fa99a2024018f727fa1803f..4e701ad3e39daf47706ef8ed3228c10b4e456b5d 100644 (file)
@@ -1579,8 +1579,8 @@ Tktt_Repr(PyObject *self)
        TkttObject *v = (TkttObject *)self;
        char buf[100];
 
-       sprintf(buf, "<tktimertoken at %p%s>", v,
-               v->func == NULL ? ", handler deleted" : "");
+       PyOS_snprintf(buf, sizeof(buf), "<tktimertoken at %p%s>", v,
+                     v->func == NULL ? ", handler deleted" : "");
        return PyString_FromString(buf);
 }
 
index 6168bb08c61cb2158460a4cb8fcc78f11aef9fa3..11d0723b97b352bb628c108599096aef7a9afacf 100644 (file)
@@ -1313,12 +1313,13 @@ array_repr(arrayobject *a)
        int i, len;
        len = a->ob_size;
        if (len == 0) {
-               sprintf(buf, "array('%c')", a->ob_descr->typecode);
+               PyOS_snprintf(buf, sizeof(buf), "array('%c')",
+                             a->ob_descr->typecode);
                return PyString_FromString(buf);
        }
        if (a->ob_descr->typecode == 'c') {
                PyObject *t_empty = PyTuple_New(0);
-               sprintf(buf, "array('c', ");
+               PyOS_snprintf(buf, sizeof(buf), "array('c', ");
                s = PyString_FromString(buf);
                v = array_tostring(a, t_empty);
                Py_DECREF(t_empty);
@@ -1328,7 +1329,7 @@ array_repr(arrayobject *a)
                PyString_ConcatAndDel(&s, PyString_FromString(")"));
                return s;
        }
-       sprintf(buf, "array('%c', [", a->ob_descr->typecode);
+       PyOS_snprintf(buf, sizeof(buf), "array('%c', [", a->ob_descr->typecode);
        s = PyString_FromString(buf);
        comma = PyString_FromString(", ");
        for (i = 0; i < len && !PyErr_Occurred(); i++) {
index ef853f5520ed9a76cd69f8b2c3f3cd881c13dbec..25037bf7f2b2b95c2b838583b4db6680bbba9d13 100644 (file)
@@ -370,8 +370,8 @@ static PyObject *
 generic_repr(genericobject *g)
 {
        char buf[100];
-       sprintf(buf, "<FORMS_object at %p, objclass=%d>",
-               g, g->ob_generic->objclass);
+       PyOS_snprintf(buf, sizeof(buf), "<FORMS_object at %p, objclass=%d>",
+                     g, g->ob_generic->objclass);
        return PyString_FromString(buf);
 }
 
@@ -1580,8 +1580,8 @@ static PyObject *
 form_repr(formobject *f)
 {
        char buf[100];
-       sprintf(buf, "<FORMS_form at %p, window=%ld>",
-               f, f->ob_form->window);
+       PyOS_snprintf(buf, sizeof(buf), "<FORMS_form at %p, window=%ld>",
+                     f, f->ob_form->window);
        return PyString_FromString(buf);
 }
 
index 0190a9b38f603294edb118e45df95ec7c664bcda..505ce929c1776c933f87067a50bd869d0b45d4de 100644 (file)
@@ -477,7 +477,8 @@ dbmopen(PyObject *self, PyObject *args)
                 break;
 #endif
             default:
-                sprintf(buf, "Flag '%c' is not supported.", *flags);
+                PyOS_snprintf(buf, sizeof(buf), "Flag '%c' is not supported.",
+                             *flags);
                 PyErr_SetString(DbmError, buf);
                 return NULL;
         }
index e34c002b039eeda57cf2133a4d3b40e5b7684553..7a8900d889f9052defef7aba3cb931230f81affa 100644 (file)
@@ -263,7 +263,8 @@ PyPcre_expand_escape(unsigned char *pattern, int pattern_len,
        case('U'):    case('l'):    case('u'):
        {
                char message[50];
-               sprintf(message, "\\%c is not allowed", c);
+               PyOS_snprintf(message, sizeof(message),
+                             "\\%c is not allowed", c);
                PyErr_SetString(ErrorObject, message);
                return NULL;
        }
@@ -495,7 +496,7 @@ PyPcre_expand(PyObject *self, PyObject *args)
                                if (result==Py_None)
                                {
                                        char message[50];
-                                       sprintf(message, 
+                                       PyOS_snprintf(message, sizeof(message),
                                                "group did not contribute to the match");
                                        PyErr_SetString(ErrorObject, 
                                                        message);
index 27e7f1a9a34e56509e465c67b662deeda24e491e..365a8366d3cf15a966294bd7e5ecc985be4af0f8 100644 (file)
@@ -432,7 +432,8 @@ os2_strerror(char *msgbuf, int msgbuflen, int errorcode, char *reason)
     if (rc == NO_ERROR)
         os2_formatmsg(msgbuf, msglen, reason);
     else
-        sprintf(msgbuf, "unknown OS error #%d", errorcode);
+        PyOS_snprintf(msgbuf, sizeof(msgbuf),
+                     "unknown OS error #%d", errorcode);
 
     return msgbuf;
 }
@@ -5814,8 +5815,9 @@ static int insertvalues(PyObject *d)
     case 40: ver = "4.00"; break;
     case 50: ver = "5.00"; break;
     default:
-        sprintf(tmp, "%d-%d", values[QSV_VERSION_MAJOR],
-                              values[QSV_VERSION_MINOR]);
+        PyOS_snprintf(tmp, sizeof(tmp),
+                     "%d-%d", values[QSV_VERSION_MAJOR],
+                      values[QSV_VERSION_MINOR]);
         ver = &tmp[0];
     }
 
index dada234f2c51a705567bc5fc52f2db534b3ae687..90e53b61a1fd2b77fec77a86985484a8486a6cbc 100644 (file)
@@ -129,7 +129,7 @@ set_error(xmlparseobject *self)
     int column = XML_GetErrorColumnNumber(parser);
     enum XML_Error code = XML_GetErrorCode(parser);
 
-    sprintf(buffer, "%.200s: line %i, column %i",
+    PyOS_snprintf(buffer, sizeof(buffer), "%.200s: line %i, column %i",
             XML_ErrorString(code), lineno, column);
     err = PyObject_CallFunction(ErrorObject, "s", buffer);
     if (  err != NULL
index d2139927344d62d43795bc32e3d5349bcd0173a6..fe653b821b2dcbe2b65c9cadb6ed1e360463b79e 100644 (file)
@@ -165,7 +165,7 @@ set_hook(const char * funcname, PyObject **hook_var, PyThreadState **tstate, PyO
 {
        PyObject *function = Py_None;
        char buf[80];
-       sprintf(buf, "|O:set_%.50s", funcname);
+       PyOS_snprintf(buf, sizeof(buf), "|O:set_%.50s", funcname);
        if (!PyArg_ParseTuple(args, buf, &function))
                return NULL;
        if (function == Py_None) {
@@ -181,7 +181,9 @@ set_hook(const char * funcname, PyObject **hook_var, PyThreadState **tstate, PyO
                *tstate = PyThreadState_Get();
        }
        else {
-               sprintf(buf, "set_%.50s(func): argument not callable", funcname);
+               PyOS_snprintf(buf, sizeof(buf),
+                             "set_%.50s(func): argument not callable",
+                             funcname);
                PyErr_SetString(PyExc_TypeError, buf);
                return NULL;
        }
index 2b27e710acab5a297b4f804ae8d0ef5d31bd4184..eccee4d3f4ab23cef041b3125827553281dbc481 100644 (file)
@@ -1768,9 +1768,11 @@ PySocketSock_repr(PySocketSockObject *s)
                return NULL;
        }
 #endif
-       sprintf(buf,
-               "<socket object, fd=%ld, family=%d, type=%d, protocol=%d>",
-               (long)s->sock_fd, s->sock_family, s->sock_type, s->sock_proto);
+       PyOS_snprintf(buf, sizeof(buf),
+                     "<socket object, fd=%ld, family=%d, type=%d, protocol=%d>",
+                     (long)s->sock_fd, s->sock_family,
+                     s->sock_type,
+                     s->sock_proto);
        return PyString_FromString(buf);
 }
 
@@ -3056,7 +3058,8 @@ NTinit(void)
                    "WSAStartup failed: requested version not supported");
                break;
        default:
-               sprintf(buf, "WSAStartup failed: error code %d", ret);
+               PyOS_snprintf(buf, sizeof(buf),
+                             "WSAStartup failed: error code %d", ret);
                PyErr_SetString(PyExc_ImportError, buf);
                break;
        }
index bd56ee03f73eb202e55a45c79d2f4e2a8f1bcce4..3c5de2b471e1babe287a87f70b97341c5f21bcb7 100644 (file)
@@ -772,7 +772,8 @@ strop_atoi(PyObject *self, PyObject *args)
                end++;
        if (*end != '\0') {
   bad:
-               sprintf(buffer, "invalid literal for atoi(): %.200s", s);
+               PyOS_snprintf(buffer, sizeof(buffer),
+                             "invalid literal for atoi(): %.200s", s);
                PyErr_SetString(PyExc_ValueError, buffer);
                return NULL;
        }
@@ -865,12 +866,14 @@ strop_atof(PyObject *self, PyObject *args)
        while (*end && isspace(Py_CHARMASK(*end)))
                end++;
        if (*end != '\0') {
-               sprintf(buffer, "invalid literal for atof(): %.200s", s);
+               PyOS_snprintf(buffer, sizeof(buffer),
+                             "invalid literal for atof(): %.200s", s);
                PyErr_SetString(PyExc_ValueError, buffer);
                return NULL;
        }
        else if (errno != 0) {
-               sprintf(buffer, "atof() literal too large: %.200s", s);
+               PyOS_snprintf(buffer, sizeof(buffer), 
+                             "atof() literal too large: %.200s", s);
                PyErr_SetString(PyExc_ValueError, buffer);
                return NULL;
        }
index 74c4b5206e37d72d03e3dad606ebeb99a8517452..723918df52886eef34286aa30b3393b124b39d56 100644 (file)
@@ -2876,7 +2876,9 @@ formatfloat(char *buf, size_t buflen, int flags,
                prec = 6;
        if (type == 'f' && fabs(x)/1e25 >= 1e25)
                type = 'g';
-       sprintf(fmt, "%%%s.%d%c", (flags&F_ALT) ? "#" : "", prec, type);
+       PyOS_snprintf(fmt, sizeof(fmt), "%%%s.%d%c",
+                     (flags&F_ALT) ? "#" : "",
+                     prec, type);
        /* worst case length calc to ensure no buffer overrun:
             fmt = %#.<prec>g
             buf = '-' + [0-9]*prec + '.' + 'e+' + (longest exp
@@ -2889,7 +2891,7 @@ formatfloat(char *buf, size_t buflen, int flags,
                        "formatted float is too long (precision too large?)");
                return -1;
        }
-       sprintf(buf, fmt, x);
+       PyOS_snprintf(buf, buflen, fmt, x);
        return strlen(buf);
 }
 
@@ -3047,7 +3049,9 @@ formatint(char *buf, size_t buflen, int flags,
                return -1;
        if (prec < 0)
                prec = 1;
-       sprintf(fmt, "%%%s.%dl%c", (flags&F_ALT) ? "#" : "", prec, type);
+       PyOS_snprintf(fmt, sizeof(fmt), "%%%s.%dl%c",
+                     (flags&F_ALT) ? "#" : "", 
+                     prec, type);
        /* buf = '+'/'-'/'0'/'0x' + '[0-9]'*max(prec, len(x in octal))
           worst case buf = '0x' + [0-9]*prec, where prec >= 11 */
        if (buflen <= 13 || buflen <= (size_t)2 + (size_t)prec) {
@@ -3055,7 +3059,7 @@ formatint(char *buf, size_t buflen, int flags,
                        "formatted integer is too long (precision too large?)");
                return -1;
        }
-       sprintf(buf, fmt, x);
+       PyOS_snprintf(buf, buflen, fmt, x);
        /* When converting 0 under %#x or %#X, C leaves off the base marker,
         * but we want it (for consistency with other %#x conversions, and
         * for consistency with Python's hex() function).