[Bug 1175869] [NEW] coding error can lead to connections going to localhost rather than desired system
Michael Hudson-Doyle
michael.hudson+lp at linaro.org
Fri May 3 03:11:36 UTC 2013
Public bug reported:
The bug is present in raring, but also in the upstream 3.0.0 release.
This code from newsocket in sock.c:
int herrno;
struct sockaddr_in cli;
struct hostent *hp;
...
{
struct hostent hent;
char hbf[8192];
memset(hbf, '\0', sizeof hbf);
/* for systems using GNU libc */
if((gethostbyname_r(hostparam, &hent, hbf, sizeof(hbf), &hp, &herrno) < 0)){
hp = NULL;
}
}
if(hp == NULL){ return -1; }
memset((void*) &cli, 0, sizeof(cli));
memcpy(&cli.sin_addr, hp->h_addr, hp->h_length);
invokes undefined behaviour because gethostbyname_r points hp at the
'hent' automatic variable but hp is used after the execution of the
scope that declared it, in violation of section 6.2.4 of the C99
standard.
The particular undefined behaviour I see is that cli.sin_addr ends up
being all bits 0, and so the connection goes to localhost.
** Affects: siege (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Server Team, which is subscribed to siege in Ubuntu.
https://bugs.launchpad.net/bugs/1175869
Title:
coding error can lead to connections going to localhost rather than
desired system
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/siege/+bug/1175869/+subscriptions
More information about the Ubuntu-server-bugs
mailing list