> On Sun, 2008-01-20 at 11:59 -0800, David Schwartz wrote:

> > Most definitely not. At a minimum, the definition of things
> > like 'errno' and
> > 'malloc' might be different between a multithreaded build and a
> > non-multithreaded build. There is no supported way to combine
> > multithreaded
> > code and code that was not compiled to be multithreaded.

> > It may happen to work, but that's a lousy way to make security-sensitive
> > software.

> Definitely not true on gcc+glibc

Umm, definitely true.

> - there is no difference between
> multithreaded and non-multithreaded _compilation_ (surely not for errno
> and malloc).

Really? So 'errno' refers to a process global in both cases?! (Note that I
said the "definition", not the implementation.)

> So it is pretty safe to use non-multithreaded libraries (if
> they are reentrant) in multithreaded applications on gcc+glibc. Of
> course at link time and especially run time, the code being executed in
> glibc is very different.

The problem is that it is neither specified to work nor guarantee to work.
You may enjoy writing security-sensitive software that "just happens to
work" where you have to retest your assumptions with every new version of
the system libraries, but I don't.

I hope you don't dynamically-link such a thing. You have no way of knowing
if the glibc libraries you might happen to run-time link to will work. When
you use "features" that aren't guaranteed, a newer version may break the
assumptions and still claim compatability.

DS


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to