Skip to Content.
Sympa Menu

svadev - Re: [svadev] safecode and alloca(0)

svadev AT lists.siebelschool.illinois.edu

Subject: Svadev mailing list

List archive

Re: [svadev] safecode and alloca(0)


Chronological Thread 
  • From: Matthew Wala <wala1 AT illinois.edu>
  • To: John Criswell <criswell AT illinois.edu>
  • Cc: svadev AT cs.uiuc.edu
  • Subject: Re: [svadev] safecode and alloca(0)
  • Date: Tue, 22 Nov 2011 22:25:38 -0600
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/svadev>
  • List-id: <svadev.cs.uiuc.edu>

On Tue, Nov 22, 2011 at 10:18 PM, John Criswell
<criswell AT illinois.edu>
wrote:
> On 11/22/2011 10:17 PM, Matthew Wala wrote:
>>
>> On Tue, Nov 22, 2011 at 9:48 PM, John
>> Criswell<criswell AT illinois.edu>
>>  wrote:
>>>
>>> On 11/22/2011 6:48 PM, Matthew Wala wrote:
>>>>
>>>> Why does SAFECode allow malloc(0) but disallows alloca(0)?
>>>
>>> Hrm.  I'm not sure if this is really what SAFECode *should* do, but I can
>>> think of some reasons why it does it.
>>>
>>> I think malloc(0) does occur in some programs, and SAFECode could easily
>>> handle it by changing the allocation size to 1 in the poolalloc()
>>> function
>>> back when it was always using the pool allocator run-time.  This cannot
>>> be
>>> done with allocas since alloca is an LLVM instruction and emitted
>>> straight
>>> to machine code.
>>>
>>> It may also be the case that malloc(0) is correct (return a pointer to
>>> zero-sized storage) while alloca(0) is not, but I'd have to check the
>>> LLVM
>>> docs to be certain.
>>>
>>> I think the correct thing to do now is to first determine whether
>>> malloc(0)
>>> and alloca(0) are allowed and, if so, permit the pool_register() and
>>> pool_register_stack() (and their variants) to register zero-sized
>>> objects.
>>>
>>> That said, this is extremely low priority unless you're seeing a program
>>> that is breaking because of it.  Unless SAFECode is breaking a correct
>>> program, you should just file a bug report, and we'll get back to it when
>>> we
>>> have time.  Testing SAFECode out on larger programs is higher priority at
>>> present as well as fixing more serious bugs such as PR#11414 and
>>> PR#11423.
>>>
>>> -- John T.
>>>
>> I've confirmed that malloc(0) can occur and alloca(0) fails with an
>> assertions.
>> I'm seeing alloca(0) occur in my patched versions of tar/cpio.
>
> Can you clarify what you mean by "patched?"  Do you mean that alloca(0) is
> showing up when you fix the memory safety errors you've found?
>
> -- John T.
>

Yes.

Matt

>
>>
>> Matt
>>
>>>
>>>> Matt
>>>> _______________________________________________
>>>> svadev mailing list
>>>> svadev AT cs.uiuc.edu
>>>> http://lists.cs.uiuc.edu/mailman/listinfo/svadev
>>>
>
>





Archive powered by MHonArc 2.6.16.

Top of Page