mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Release host name memory. Fixes #783312. Will backport to 2.3.
This commit is contained in:
parent
7edd0a9b21
commit
5db099a4fe
1 changed files with 12 additions and 6 deletions
|
@ -956,7 +956,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
||||||
{
|
{
|
||||||
struct sockaddr_in* addr;
|
struct sockaddr_in* addr;
|
||||||
char *host;
|
char *host;
|
||||||
int port;
|
int port, result;
|
||||||
addr=(struct sockaddr_in*)&(s->sock_addr).in;
|
addr=(struct sockaddr_in*)&(s->sock_addr).in;
|
||||||
if (!PyTuple_Check(args)) {
|
if (!PyTuple_Check(args)) {
|
||||||
PyErr_Format(
|
PyErr_Format(
|
||||||
|
@ -969,7 +969,10 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
||||||
if (!PyArg_ParseTuple(args, "eti:getsockaddrarg",
|
if (!PyArg_ParseTuple(args, "eti:getsockaddrarg",
|
||||||
"idna", &host, &port))
|
"idna", &host, &port))
|
||||||
return 0;
|
return 0;
|
||||||
if (setipaddr(host, (struct sockaddr *)addr, sizeof(*addr), AF_INET) < 0)
|
result = setipaddr(host, (struct sockaddr *)addr,
|
||||||
|
sizeof(*addr), AF_INET);
|
||||||
|
PyMem_Free(host);
|
||||||
|
if (result < 0)
|
||||||
return 0;
|
return 0;
|
||||||
addr->sin_family = AF_INET;
|
addr->sin_family = AF_INET;
|
||||||
addr->sin_port = htons((short)port);
|
addr->sin_port = htons((short)port);
|
||||||
|
@ -983,7 +986,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
||||||
{
|
{
|
||||||
struct sockaddr_in6* addr;
|
struct sockaddr_in6* addr;
|
||||||
char *host;
|
char *host;
|
||||||
int port, flowinfo, scope_id;
|
int port, flowinfo, scope_id, result;
|
||||||
addr = (struct sockaddr_in6*)&(s->sock_addr).in6;
|
addr = (struct sockaddr_in6*)&(s->sock_addr).in6;
|
||||||
flowinfo = scope_id = 0;
|
flowinfo = scope_id = 0;
|
||||||
if (!PyArg_ParseTuple(args, "eti|ii",
|
if (!PyArg_ParseTuple(args, "eti|ii",
|
||||||
|
@ -991,7 +994,10 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
|
||||||
&scope_id)) {
|
&scope_id)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (setipaddr(host, (struct sockaddr *)addr, sizeof(*addr), AF_INET6) < 0)
|
result = setipaddr(host, (struct sockaddr *)addr,
|
||||||
|
sizeof(*addr), AF_INET6);
|
||||||
|
PyMem_Free(host);
|
||||||
|
if (result < 0)
|
||||||
return 0;
|
return 0;
|
||||||
addr->sin6_family = s->sock_family;
|
addr->sin6_family = s->sock_family;
|
||||||
addr->sin6_port = htons((short)port);
|
addr->sin6_port = htons((short)port);
|
||||||
|
@ -3100,7 +3106,7 @@ socket_getaddrinfo(PyObject *self, PyObject *args)
|
||||||
pptr = (char *)NULL;
|
pptr = (char *)NULL;
|
||||||
} else {
|
} else {
|
||||||
PyErr_SetString(socket_error, "Int or String expected");
|
PyErr_SetString(socket_error, "Int or String expected");
|
||||||
return NULL;
|
goto err;
|
||||||
}
|
}
|
||||||
memset(&hints, 0, sizeof(hints));
|
memset(&hints, 0, sizeof(hints));
|
||||||
hints.ai_family = family;
|
hints.ai_family = family;
|
||||||
|
@ -3114,7 +3120,7 @@ socket_getaddrinfo(PyObject *self, PyObject *args)
|
||||||
RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */
|
RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */
|
||||||
if (error) {
|
if (error) {
|
||||||
set_gaierror(error);
|
set_gaierror(error);
|
||||||
return NULL;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((all = PyList_New(0)) == NULL)
|
if ((all = PyList_New(0)) == NULL)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue