char tst = {
'a','b'
} ;
int main (int argc, const char * argv[]) {
void (*fp)() ;
fp = tst ;
}
C Question
I am assuming the lack of type safety in C is the reason why I can do this?
In theory I can then load any array with binary code and execute it. I was reading how the windows kernel (use to or still does) overwrite function pointers in order to redirect execution flow to another function. This is quite interesting.
Type safety wouldn't prevent that from happening.
The general solution for that problem/feature found in some security solutions is to prevent stack and heap execution.
The general solution for that problem/feature found in some security solutions is to prevent stack and heap execution.
That's not a bug, it's a feature! Insomniac (developer of Ratchet and Clank, Resistance...) uses this extensively in SPU shaders. Because of limited memory in PS3 SPEs (256K) they swap the code around like that with char arrays.
EDIT: Never mind, I'm dumb... warnings aren't errors... I just usually treat them that way...
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement