Fix memory leaks detecting in bug report #478003.
This commit is contained in:
parent
0b66310476
commit
f0b11d2893
|
@ -571,12 +571,14 @@ get_addr(hostname, af, res, pai, port0)
|
|||
error = EAI_FAIL;
|
||||
break;
|
||||
}
|
||||
goto bad;
|
||||
goto free;
|
||||
}
|
||||
|
||||
if ((hp->h_name == NULL) || (hp->h_name[0] == 0) ||
|
||||
(hp->h_addr_list[0] == NULL))
|
||||
ERR(EAI_FAIL);
|
||||
(hp->h_addr_list[0] == NULL)) {
|
||||
error = EAI_FAIL;
|
||||
goto free;
|
||||
}
|
||||
|
||||
for (i = 0; (ap = hp->h_addr_list[i]) != NULL; i++) {
|
||||
switch (af) {
|
||||
|
@ -632,7 +634,7 @@ get_addr(hostname, af, res, pai, port0)
|
|||
if (hp)
|
||||
freehostent(hp);
|
||||
#endif
|
||||
bad:
|
||||
/* bad: */
|
||||
*res = NULL;
|
||||
return error;
|
||||
}
|
||||
|
|
|
@ -606,6 +606,7 @@ setipaddr(char* name, struct sockaddr * addr_ret, int af)
|
|||
return -1;
|
||||
}
|
||||
if (res->ai_next) {
|
||||
freeaddrinfo(res);
|
||||
PyErr_SetString(PySocket_Error,
|
||||
"wildcard resolved to multiple address");
|
||||
return -1;
|
||||
|
@ -2461,7 +2462,8 @@ PySocket_inet_ntoa(PyObject *self, PyObject *args)
|
|||
static PyObject *
|
||||
PySocket_getaddrinfo(PyObject *self, PyObject *args)
|
||||
{
|
||||
struct addrinfo hints, *res0, *res;
|
||||
struct addrinfo hints, *res;
|
||||
struct addrinfo *res0 = NULL;
|
||||
PyObject *pobj = (PyObject *)NULL;
|
||||
char pbuf[30];
|
||||
char *hptr, *pptr;
|
||||
|
@ -2522,6 +2524,8 @@ PySocket_getaddrinfo(PyObject *self, PyObject *args)
|
|||
err:
|
||||
Py_XDECREF(single);
|
||||
Py_XDECREF(all);
|
||||
if (res0)
|
||||
freeaddrinfo(res0);
|
||||
return (PyObject *)NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue