From 2a01f356861e3ffcd8eb9aac248caec4ea7204d0 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 9 Oct 2025 01:00:12 +0200 Subject: [PATCH] gh-139748: Fix socket.if_nametoindex() Argument Clinic Fix a reference leak. --- Modules/clinic/socketmodule.c.h | 7 +++++-- Modules/socketmodule.c | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Modules/clinic/socketmodule.c.h b/Modules/clinic/socketmodule.c.h index 3f4056efff2fec..4db27a441f85a6 100644 --- a/Modules/clinic/socketmodule.c.h +++ b/Modules/clinic/socketmodule.c.h @@ -239,7 +239,7 @@ static PyObject * _socket_socket_if_nametoindex(PySocketSockObject *self, PyObject *arg) { PyObject *return_value = NULL; - PyObject *oname; + PyObject *oname = NULL; if (!PyUnicode_FSConverter(arg, &oname)) { goto exit; @@ -247,6 +247,9 @@ _socket_socket_if_nametoindex(PySocketSockObject *self, PyObject *arg) return_value = _socket_socket_if_nametoindex_impl(self, oname); exit: + /* Cleanup for oname */ + Py_XDECREF(oname); + return return_value; } @@ -259,4 +262,4 @@ _socket_socket_if_nametoindex(PySocketSockObject *self, PyObject *arg) #ifndef _SOCKET_SOCKET_IF_NAMETOINDEX_METHODDEF #define _SOCKET_SOCKET_IF_NAMETOINDEX_METHODDEF #endif /* !defined(_SOCKET_SOCKET_IF_NAMETOINDEX_METHODDEF) */ -/*[clinic end generated code: output=eb37b5d88a1e4661 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=2a58294cf2c87e33 input=a9049054013a1b77]*/ diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index a6910df6fba64e..af7f81701b01aa 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -7098,7 +7098,7 @@ Returns a list of network interface information (index, name) tuples."); /*[clinic input] _socket.socket.if_nametoindex - oname: object(converter="PyUnicode_FSConverter") + oname: unicode_fs_encoded / Returns the interface index corresponding to the interface name if_name. @@ -7106,7 +7106,7 @@ Returns the interface index corresponding to the interface name if_name. static PyObject * _socket_socket_if_nametoindex_impl(PySocketSockObject *self, PyObject *oname) -/*[clinic end generated code: output=f7fc00511a309a8e input=662688054482cd46]*/ +/*[clinic end generated code: output=f7fc00511a309a8e input=242c01253c533053]*/ { #ifdef MS_WINDOWS NET_IFINDEX index;