![]() See this lwn.net article for a discussion of the issue. This opens up opportunities for some clever tricks to take control of the process. If some attacker can trick a program to allocate a large amount of memory, this can result in the stack pointer skipping a guard area and point into a valid, but different area instead. There was some talk in the summer of 2017 about the possibility to exploit this behaviour. However, the check for stack overflow is performed when the stack memory is accessed, so just performing a large allocation on the stack, or otherwise changing the value of the stack pointer, does not necessarily trigger a fault. vscastro wrote on Wednesday, August 19, 2009: Good afternoon, I use V5.1.2, and I know how to increase the limit on stack size, because I’m only getting a maximum of 2100 bytes. The kernel does not move around memory areas (like the mmap area) after the program has been started, and could not do so, because there are usually pointers pointing into this area that would point to wrong addresses after the move. The maximum size of the stack can be changed with ulimit -s before starting the program. Exceeding this limit will result in a segmentation fault and the process will be sent a SIGSEGV signal, by default killing it. The process main thread stack size cannot grow larger than the set limit.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |