]> granicus.if.org Git - python/commitdiff
more _PyString_Resize error checking
authorBenjamin Peterson <benjamin@python.org>
Sat, 3 Apr 2010 00:57:33 +0000 (00:57 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sat, 3 Apr 2010 00:57:33 +0000 (00:57 +0000)
Objects/fileobject.c
Objects/unicodeobject.c
Python/marshal.c

index 7c65b98f65f00d27367b74b1ff22e839df295d10..f479501581e447eeafcc4b4c895bd17835714d5e 100644 (file)
@@ -1102,8 +1102,8 @@ file_read(PyFileObject *f, PyObject *args)
                        break;
                }
        }
-       if (bytesread != buffersize)
-               _PyString_Resize(&v, bytesread);
+       if (bytesread != buffersize && _PyString_Resize(&v, bytesread))
+               return NULL;
        return v;
 }
 
@@ -1356,8 +1356,8 @@ getline_via_fgets(PyFileObject *f, FILE *fp)
                /* overwrite the trailing null byte */
                pvfree = BUF(v) + (prev_v_size - 1);
        }
-       if (BUF(v) + total_v_size != p)
-               _PyString_Resize(&v, p - BUF(v));
+       if (BUF(v) + total_v_size != p && _PyString_Resize(&v, p - BUF(v)))
+               return NULL;
        return v;
 #undef INITBUFSIZE
 #undef MAXBUFSIZE
@@ -1469,8 +1469,8 @@ get_line(PyFileObject *f, int n)
        }
 
        used_v_size = buf - BUF(v);
-       if (used_v_size != total_v_size)
-               _PyString_Resize(&v, used_v_size);
+       if (used_v_size != total_v_size && _PyString_Resize(&v, used_v_size))
+               return NULL;
        return v;
 }
 
@@ -1536,8 +1536,10 @@ PyFile_GetLine(PyObject *f, int n)
                                        "EOF when reading a line");
                }
                else if (s[len-1] == '\n') {
-                       if (result->ob_refcnt == 1)
-                               _PyString_Resize(&result, len-1);
+                       if (result->ob_refcnt == 1) {
+                               if (_PyString_Resize(&result, len-1))
+                                       return NULL;
+                       }
                        else {
                                PyObject *v;
                                v = PyString_FromStringAndSize(s, len-1);
index 930d58c803c7f079c7925bd118aa3e456c651581..aab33b50c0e0e877c467767182de1919675888c0 100644 (file)
@@ -1848,7 +1848,8 @@ encode_char:
     if (inShift)
         *out++ = '-';
 
-    _PyString_Resize(&v, out - start);
+    if (_PyString_Resize(&v, out - start))
+        return NULL;
     return v;
 }
 
@@ -2169,7 +2170,8 @@ PyUnicode_EncodeUTF8(const Py_UNICODE *s,
         /* Cut back to size actually needed. */
         nneeded = p - PyString_AS_STRING(v);
         assert(nneeded <= nallocated);
-        _PyString_Resize(&v, nneeded);
+        if (_PyString_Resize(&v, nneeded))
+            return NULL;
     }
     return v;
 
@@ -3129,7 +3131,8 @@ PyObject *unicodeescape_string(const Py_UNICODE *s,
         *p++ = PyString_AS_STRING(repr)[1];
 
     *p = '\0';
-    _PyString_Resize(&repr, p - PyString_AS_STRING(repr));
+    if (_PyString_Resize(&repr, p - PyString_AS_STRING(repr)))
+        return NULL;
     return repr;
 }
 
@@ -3350,7 +3353,8 @@ PyObject *PyUnicode_EncodeRawUnicodeEscape(const Py_UNICODE *s,
             *p++ = (char) ch;
     }
     *p = '\0';
-    _PyString_Resize(&repr, p - q);
+    if (_PyString_Resize(&repr, p - q))
+        return NULL;
     return repr;
 }
 
index c7015d2eb7b5960a326bd2e82367770b1ef060ae..9e4a6926a5580202e0bf9cccbe23a2d2955078f6 100644 (file)
@@ -1237,7 +1237,8 @@ PyMarshal_WriteObjectToString(PyObject *x, int version)
                                        "too much marshall data for a string");
                        return NULL;
                }
-               _PyString_Resize(&wf.str, (Py_ssize_t)(wf.ptr - base));
+               if (_PyString_Resize(&wf.str, (Py_ssize_t)(wf.ptr - base)))
+                       return NULL;
        }
        if (wf.error != WFERR_OK) {
                Py_XDECREF(wf.str);