3 ms·
Is use-after-free ever really defined behavior?
by blueblob 5y ago
Is use-after-free ever really defined behavior?
- MaxBarraclough 5y agoThat would depend on the language and the libraries. You could roll your own 'safe' memory pool in C such that use-after-free doesn't produce undefined behaviour. You'd still have a bug, but it wouldn't have to invoke UB at the level of the C programming language.
- matheusmoreira 5y agoYes. Undefined behavior exists only in standards. It's perfectly possible for implementations to define everything. https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost-the-api-war/ https://www.joelonsoftware.com/2004/06/13/how-microsoft-lost... > I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: > it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. > The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. > They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
- deleted 5y ago[deleted]