|
|
|
|
|
by stong1
1697 days ago
|
|
Right. The challenge is written incorrectly on purpose, otherwise the code isn't vulnerable. The use of volatile is a bit of a misdirection for the CTF players, since you're right that it's a common misconception that volatile acts like a barrier. > You cannot write a single-writer, single-reader FIFO on modern processors without the use of memory barriers. I am not sure about this. From my understanding, on x86, given the absence of compiler reordering, processor reordering should not cause a problem for a single-reader-single-writer FIFO. Normally I just use atomics but I think in this specific instance it should still be okay anyways. Obviously it will not work on ARM. From my testing if you compile the code on x86 with clang or gcc, the resulting binary is not vulnerable. |
|
[1] see the linux kernel implementation of load acquire and store release on x86 for example.