Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Is this valid C code?

Name: Anonymous 2017-01-02 2:13

char x [5] = { 0xf0, 0x0f, 0xc7, 0xc8 };

main ()
{
void (*f)() = x;
f();
}


Found this on the Everything2 page for the Pentium F00F bug. My question is essentially whether it is indeed valid to write machine code subroutines as byte arrays and call them via a function pointer. Does the Standard have anything to say about this? And is executing code in the data segment even possible on modern architectures?

Name: Anonymous 2017-01-02 9:09

obviously this is undefined behavior and not part of the C standard.

It probably only works with gcc and I doubt even gcc specifies that this should work.. but it is a kind of common trick.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List