@@ -956,7 +956,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
956956 {
957957 struct sockaddr_in * addr ;
958958 char * host ;
959- int port ;
959+ int port , result ;
960960 addr = (struct sockaddr_in * )& (s -> sock_addr ).in ;
961961 if (!PyTuple_Check (args )) {
962962 PyErr_Format (
@@ -969,7 +969,10 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
969969 if (!PyArg_ParseTuple (args , "eti:getsockaddrarg" ,
970970 "idna" , & host , & port ))
971971 return 0 ;
972- if (setipaddr (host , (struct sockaddr * )addr , sizeof (* addr ), AF_INET ) < 0 )
972+ result = setipaddr (host , (struct sockaddr * )addr ,
973+ sizeof (* addr ), AF_INET );
974+ PyMem_Free (host );
975+ if (result < 0 )
973976 return 0 ;
974977 addr -> sin_family = AF_INET ;
975978 addr -> sin_port = htons ((short )port );
@@ -983,15 +986,18 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
983986 {
984987 struct sockaddr_in6 * addr ;
985988 char * host ;
986- int port , flowinfo , scope_id ;
989+ int port , flowinfo , scope_id , result ;
987990 addr = (struct sockaddr_in6 * )& (s -> sock_addr ).in6 ;
988991 flowinfo = scope_id = 0 ;
989992 if (!PyArg_ParseTuple (args , "eti|ii" ,
990993 "idna" , & host , & port , & flowinfo ,
991994 & scope_id )) {
992995 return 0 ;
993996 }
994- if (setipaddr (host , (struct sockaddr * )addr , sizeof (* addr ), AF_INET6 ) < 0 )
997+ result = setipaddr (host , (struct sockaddr * )addr ,
998+ sizeof (* addr ), AF_INET6 );
999+ PyMem_Free (host );
1000+ if (result < 0 )
9951001 return 0 ;
9961002 addr -> sin6_family = s -> sock_family ;
9971003 addr -> sin6_port = htons ((short )port );
@@ -3100,7 +3106,7 @@ socket_getaddrinfo(PyObject *self, PyObject *args)
31003106 pptr = (char * )NULL ;
31013107 } else {
31023108 PyErr_SetString (socket_error , "Int or String expected" );
3103- return NULL ;
3109+ goto err ;
31043110 }
31053111 memset (& hints , 0 , sizeof (hints ));
31063112 hints .ai_family = family ;
@@ -3114,7 +3120,7 @@ socket_getaddrinfo(PyObject *self, PyObject *args)
31143120 RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */
31153121 if (error ) {
31163122 set_gaierror (error );
3117- return NULL ;
3123+ goto err ;
31183124 }
31193125
31203126 if ((all = PyList_New (0 )) == NULL )
0 commit comments