diff Modules/_testbuffer.c @ 78720:fa745ed89b7a

Issue #15770: Check invalid arguments in test function. Patch by Victor Stinner.
author Stefan Krah <skrah@bytereef.org>
date Thu, 23 Aug 2012 15:53:45 +0200
parents 8fbbc7c8748e
children 7c007110d952
line wrap: on
line diff
--- a/Modules/_testbuffer.c	Thu Aug 23 15:05:29 2012 +0200
+++ b/Modules/_testbuffer.c	Thu Aug 23 15:53:45 2012 +0200
@@ -2362,6 +2362,13 @@
 
     ord = PyBytes_AS_STRING(ascii_order)[0];
     Py_DECREF(ascii_order);
+
+    if (ord != 'C' && ord != 'F' && ord != 'A') {
+        PyErr_SetString(PyExc_ValueError,
+            "invalid order, must be C, F or A");
+        return CHAR_MAX;
+    }
+
     return ord;
 }
 
@@ -2384,15 +2391,20 @@
             "buffertype must be PyBUF_READ or PyBUF_WRITE");
         return NULL;
     }
+
     type = PyLong_AsLong(buffertype);
     if (type == -1 && PyErr_Occurred()) {
         return NULL;
     }
+    if (type != PyBUF_READ && type != PyBUF_WRITE) {
+        PyErr_SetString(PyExc_ValueError,
+            "invalid buffer type");
+        return NULL;
+    }
 
     ord = get_ascii_order(order);
-    if (ord == CHAR_MAX) {
+    if (ord == CHAR_MAX)
         return NULL;
-    }
 
     return PyMemoryView_GetContiguous(obj, (int)type, ord);
 }