Issue #15770: Check invalid arguments in test function. Patch by Victor Stinner.
diff --git a/Modules/_testbuffer.c b/Modules/_testbuffer.c
index b291a14..87ada0a 100644
--- a/Modules/_testbuffer.c
+++ b/Modules/_testbuffer.c
@@ -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,16 +2391,21 @@
             "buffertype must be PyBUF_READ or PyBUF_WRITE");
         return NULL;
     }
+
     type = PyLong_AsLong(buffertype);
     if (type == -1 && PyErr_Occurred()) {
         return NULL;
     }
-
-    ord = get_ascii_order(order);
-    if (ord == CHAR_MAX) {
+    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)
+        return NULL;
+
     return PyMemoryView_GetContiguous(obj, (int)type, ord);
 }