From f050971f6eb9c368239edad904b1fefdbb570a6c Mon Sep 17 00:00:00 2001 From: lazerg Date: Sat, 17 Oct 2026 06:48:55 +0500 Subject: [PATCH 1/2] gh-159561: Return early on non-int optval in AF_VSOCK setsockopt() --- Modules/socketmodule.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 5fec77a2b82bf7..1b19f9169099d8 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -3424,6 +3424,7 @@ sock_setsockopt(PyObject *self, PyObject *args) PyErr_Format(PyExc_TypeError, "setsockopt() argument 3 for AF_VSOCK must be an int (got %T)", optval); + return NULL; } uint64_t vflag; // Must be set width of 64 bits /* setsockopt(level, opt, flag) */ From 2b7ac5a3fb0a54d7040e1f64ff951ca0464b1815 Mon Sep 17 00:00:00 2001 From: lazerg Date: Sun, 18 Oct 2026 08:42:35 +0500 Subject: [PATCH 2/2] Drop the AF_VSOCK type check, PyArg_Parse already validates --- Modules/socketmodule.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index 1b19f9169099d8..21a00a31201d9f 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -3420,12 +3420,6 @@ sock_setsockopt(PyObject *self, PyObject *args) #ifdef AF_VSOCK if (s->sock_family == AF_VSOCK) { - if (!PyIndex_Check(optval)) { - PyErr_Format(PyExc_TypeError, - "setsockopt() argument 3 for AF_VSOCK must be an int (got %T)", - optval); - return NULL; - } uint64_t vflag; // Must be set width of 64 bits /* setsockopt(level, opt, flag) */ if (!PyArg_Parse(optval, "K", &vflag)) {