5 ms·
I think the implication is that without malloc you will remove a slew of potential bugs related to memory management, making the software more stable.
by bluejekyll 10y ago
I think the implication is that without malloc you will remove a slew of potential bugs related to memory management, making the software more stable.
- stompin 10y agoand moves and copies won't have potential for other memory management bugs? You'll still have memory management overhead and now additional complexity.
- moduspwnens14 10y agoAt a high level, isn't this like implementing your own "malloc" and "free" that just pulls from your process's own memory pool instead of the OS? Or is there more to it than that?
- clarry 10y agoNo, it's just placing the appropriate structs and buffers on the stack (when not provided by the caller). It does eliminate a certain couple classes of errors, and makes some others less likely. I didn't read all the code, but I don't think it's using alloca or the like. So the stack allocation sizes are known at compile time, and bounded unless there's some recursion going on (which is unlikely).
- pilif 10y agoIMHO you're converting your heap buffer overflows into stack buffer overflows which are even easier to exploit.
- thenewwazoo 10y agoStack usage is also much, much, much easier to characterize. In systems where stack depth is well-controlled (i.e. most embedded systems that don't have dynamic process/thread creation), very simple analysis will suffice to identify places where you blow your stack.
- usefulcat 10y agoNot using the heap != everything is allocated on the stack. In situations where you want to avoid dynamic allocation, memory for most things that would otherwise have been dynamically allocated ends up being statically allocated at compile time.
- revelation 10y agoExploiting systems without dynamic memory is pretty meh.. that's some NSA level Stuxnet bespoke shit. But no, judging from the code, you just give it one big fat I/O buffer that will usually come from .bss
- nwmcsween 10y agoIt depends, does malloc have some form of hardening? does the compiler insert stack canaries?