Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 30 Nov 2011 01:04:19 +0400
From: Solar Designer <solar@...nwall.com>
To: john-dev@...ts.openwall.com
Subject: Re: .bss size in -jumbo

Jim, magnum -

On Tue, Nov 29, 2011 at 01:09:23PM -0600, jfoug wrote:
> As was found yesterday, when I had MD5 core, we need to memset to 0, the
> dyna-allocs of these buffers, to null's.

We may only do that if we allocate the buffers for the actual slot count
to be used.  Otherwise, if we allocate them to the maximum size (like
they were in .bss), we'd actually waste memory (whereas with the buffers
in .bss we merely wasted address space and maybe a little bit of memory
on page table entries).

(I haven't yet checked the patches that you prepared so far.)

> This keeps the change equal to the
> original static buffer in the .bss, which the runtime environ would memset
> to zero upon program start.

Almost.  The important difference is that the read-as-zeroes property
for .bss is normally achieved by mapping a shared copy-on-write zero
page onto all pages in the range, so memory is not allocated until you
actually write to the pages.  With a memset(), you force allocation of
actual memory.

> I am not saying these would core, but if we do
> null the string data out, then there should be no latent bug, or worse yet,
> a bug that only seems to impact one system (like I found).

Yes.  Another way to approach this, though, is by introducing a
debugging feature into our memory.c where, when the feature is in fact
temporarily enabled for debugging, the allocated memory would be
initialized to a "bad" value that is likely to cause bugs to manifest
themselves.  After such debugging and fixing of the bugs (if any), we'd
disable the initialization again (till next time we need to check for
possible bugs of this nature).

Thanks,

Alexander

Powered by blists - more mailing lists

Your e-mail address:

Powered by Openwall GNU/*/Linux - Powered by OpenVZ