|
|
Message-ID: <CAPLrYET+_akiOs3+Cruf=5ri-Cf-Kot457x_XL34WtnQZdjjAA@mail.gmail.com>
Date: Tue, 27 Jan 2015 18:23:32 +0100
From: Daniel Cegiełka <daniel.cegielka@...il.com>
To: musl@...ts.openwall.com
Subject: Re: gethostbyname buffer overflow (glibc)
2015-01-27 18:10 GMT+01:00 Rich Felker <dalias@...c.org>:
> On Tue, Jan 27, 2015 at 05:59:36PM +0100, Daniel Cegiełka wrote:
>> eg from:
>>
>> http://www.openwall.com/lists/oss-security/2015/01/27/9
>>
>> # gcc ghost.c && ./a.out
>> should not happen
>>
>>
>> retval = gethostbyname_r(name, &resbuf, temp.buffer,
>> sizeof(temp.buffer), &result, &herrno);
>>
>> if (strcmp(temp.canary, CANARY) != 0) {
>> puts("vulnerable");
>> exit(EXIT_SUCCESS);
>> }
>> if (retval == ERANGE) {
>> puts("not vulnerable");
>> exit(EXIT_SUCCESS);
>> }
>> puts("should not happen");
>> exit(EXIT_FAILURE);
>>
>> Double exit. Is something wrong with gethostbyname_r() in musl?
>
> I'm not sure what you mean by "double exit".
ghost.c return EXIT_FAILURE instead EXIT_SUCCESS, which is checked in
two cases (only)...
> As far as I can tell,
> musl just detects errors in a different order, and returns ENOENT (2)
> rather than ERANGE because the name is not valid.
... and yes, ghost.c should also check the other errors.
thx
> Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.