Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 14 Jul 2011 12:41:35 +0200
From: Luka Marčetić <>
Subject: Re: cluts: strerror_r() test

On 07/14/2011 11:57 AM, Solar Designer wrote:
> Luka, Rich -
> I've uncommented the test for strerror_r(), which you marked "glibc
> fail", and it passed the test on glibc 2.3.6 for me.  What exactly was
> wrong with it (or rather with glibc) in your testing?
> Thanks,
> Alexander

The test was uncommented yesterday morning, as I found it was my fault 
that it crashed, not glibc's. Actually, I think it was -O2 that helped 
me realize that, after I had uncommented the function. Here's the 
relevant diff:
You can see that strerror_r was passed size-1, although size was not 
initialized (or rather, it was initialized by a test before that one). 
Strerror_r implementations are free to redirect a passed pointer to 
immutable memory if size(buflen) argument is sufficiently large. Of 
course, wanting to write to s[size-1] would SIGSEGV in that case. My 
assumption was that glibc redirected the pointer even though I gave it 
size-1, in which case it's incorrect behavior and it should simply copy 
to the provided buffer. Turns out that's not the case, and the fail was 

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.