[Python-checkins] python/dist/src/Modules socketmodule.c,1.237,1.238
loewis@users.sourceforge.net
loewis@users.sourceforge.net
Sun, 28 Jul 2002 09:10:33 -0700
Update of /cvsroot/python/python/dist/src/Modules
In directory usw-pr-cvs1:/tmp/cvs-serv31576/Modules
Modified Files:
socketmodule.c
Log Message:
Pass length of result structure into setipaddr. Fixes bug #565747.
Committed to 2.2 branch.
Index: socketmodule.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/socketmodule.c,v
retrieving revision 1.237
retrieving revision 1.238
diff -C2 -d -r1.237 -r1.238
*** socketmodule.c 25 Jul 2002 16:37:51 -0000 1.237
--- socketmodule.c 28 Jul 2002 16:10:31 -0000 1.238
***************
*** 587,591 ****
static int
! setipaddr(char *name, struct sockaddr *addr_ret, int af)
{
struct addrinfo hints, *res;
--- 587,591 ----
static int
! setipaddr(char *name, struct sockaddr *addr_ret, size_t addr_ret_size, int af)
{
struct addrinfo hints, *res;
***************
*** 625,629 ****
return -1;
}
! memcpy(addr_ret, res->ai_addr, res->ai_addrlen);
freeaddrinfo(res);
return siz;
--- 625,631 ----
return -1;
}
! if (res->ai_addrlen < addr_ret_size)
! addr_ret_size = res->ai_addrlen;
! memcpy(addr_ret, res->ai_addr, addr_ret_size);
freeaddrinfo(res);
return siz;
***************
*** 660,664 ****
return -1;
}
! memcpy((char *) addr_ret, res->ai_addr, res->ai_addrlen);
freeaddrinfo(res);
switch (addr_ret->sa_family) {
--- 662,668 ----
return -1;
}
! if (res->ai_addrlen < addr_ret_size)
! addr_ret_size = res->ai_addrlen;
! memcpy((char *) addr_ret, res->ai_addr, addr_ret_size);
freeaddrinfo(res);
switch (addr_ret->sa_family) {
***************
*** 844,848 ****
if (!PyArg_ParseTuple(args, "si:getsockaddrarg", &host, &port))
return 0;
! if (setipaddr(host, (struct sockaddr *)addr, AF_INET) < 0)
return 0;
addr->sin_family = AF_INET;
--- 848,852 ----
if (!PyArg_ParseTuple(args, "si:getsockaddrarg", &host, &port))
return 0;
! if (setipaddr(host, (struct sockaddr *)addr, sizeof(*addr), AF_INET) < 0)
return 0;
addr->sin_family = AF_INET;
***************
*** 865,869 ****
return 0;
}
! if (setipaddr(host, (struct sockaddr *)addr, AF_INET6) < 0)
return 0;
addr->sin6_family = s->sock_family;
--- 869,873 ----
return 0;
}
! if (setipaddr(host, (struct sockaddr *)addr, sizeof(*addr), AF_INET6) < 0)
return 0;
addr->sin6_family = s->sock_family;
***************
*** 2047,2051 ****
if (!PyArg_ParseTuple(args, "s:gethostbyname", &name))
return NULL;
! if (setipaddr(name, (struct sockaddr *)&addrbuf, AF_INET) < 0)
return NULL;
return makeipaddr((struct sockaddr *)&addrbuf,
--- 2051,2055 ----
if (!PyArg_ParseTuple(args, "s:gethostbyname", &name))
return NULL;
! if (setipaddr(name, (struct sockaddr *)&addrbuf, sizeof(addrbuf), AF_INET) < 0)
return NULL;
return makeipaddr((struct sockaddr *)&addrbuf,
***************
*** 2220,2224 ****
if (!PyArg_ParseTuple(args, "s:gethostbyname_ex", &name))
return NULL;
! if (setipaddr(name, (struct sockaddr *)&addr, PF_INET) < 0)
return NULL;
Py_BEGIN_ALLOW_THREADS
--- 2224,2228 ----
if (!PyArg_ParseTuple(args, "s:gethostbyname_ex", &name))
return NULL;
! if (setipaddr(name, (struct sockaddr *)&addr, sizeof(addr), PF_INET) < 0)
return NULL;
Py_BEGIN_ALLOW_THREADS
***************
*** 2296,2300 ****
return NULL;
af = PF_UNSPEC;
! if (setipaddr(ip_num, sa, af) < 0)
return NULL;
af = sa->sa_family;
--- 2300,2304 ----
return NULL;
af = PF_UNSPEC;
! if (setipaddr(ip_num, sa, sizeof(addr), af) < 0)
return NULL;
af = sa->sa_family;