Is malloc deterministic?

后端 未结 7 1547
一整个雨季
一整个雨季 2020-12-14 07:05

Is malloc deterministic? Say If I have a forked process, that is, a replica of another process, and at some point both of them call the malloc

7条回答
  •  孤城傲影
    2020-12-14 08:05

    There is no reason at all for it to be deterministic, in fact there can be some benefit to it not being deterministic, for example increasing the complexity of exploiting bugs (see also this paper).

    This randomness can be helpful at making exploits harder to write. To successfully exploit a buffer overflow you typically need to do two things:

    1. Deliver a payload into a predictable/known memory location
    2. Cause execution to jump to that location

    If the memory location is unpredictable making that jump can become quite a lot harder.

    The relevant quote from the standard §7.20.3.3/2:

    The malloc function allocates space for an object whose size is specified by size and whose value is indeterminate

    If it were the intention to make it deterministic then that would be clearly stated as such.

    Even if it looks deterministic today I wouldn't bet on it remaining so with a newer kernel or a newer libc/GCC version.

提交回复
热议问题