diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-08-22 21:27:01 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-08-22 21:27:01 +0000 |
| commit | 3e23392105fad0d847b41f730d002a700cd4d752 (patch) | |
| tree | 89d0d2fc163d96f332fa7a8bcf3b6bb7f34f61bb /scripts | |
| parent | ab37902543e06bb13aefc10c023729b6fd35b452 (diff) | |
| download | zcatch-3e23392105fad0d847b41f730d002a700cd4d752.tar.gz zcatch-3e23392105fad0d847b41f730d002a700cd4d752.zip | |
added check in the data compilers so it verifies pointer, float and long sizes when loading the container
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/compiler.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/scripts/compiler.py b/scripts/compiler.py index ccafdae4..53b9fd29 100755 --- a/scripts/compiler.py +++ b/scripts/compiler.py @@ -510,8 +510,15 @@ static void patch_ptr(char **ptr, char *base) data_container *load_data_from_memory(unsigned char *mem) { + if(mem[0] != sizeof(void*)) + return 0; + if(mem[1] != sizeof(long)) + return 0; + if(mem[2] != sizeof(float)) + return 0; + /* patch all pointers */ - data_container *con = (data_container*)mem; + data_container *con = (data_container*)(mem + 4); patch_ptr_data_container(con, (char *)con); return con; } @@ -548,7 +555,8 @@ data_container *load_data_from_file(const char *filename) i = cons.allocate(s.size()) s.emit_data(cons, i, self.srcdata) cons.patch_pointers() - return cons.data + header = struct.pack("bbbb", option_ptrsize, option_intsize, option_floatsize, 0) + return header + cons.data def create_translator(script, srcdata): t = translator() |