about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-08-22 21:27:01 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-08-22 21:27:01 +0000
commit3e23392105fad0d847b41f730d002a700cd4d752 (patch)
tree89d0d2fc163d96f332fa7a8bcf3b6bb7f34f61bb /scripts
parentab37902543e06bb13aefc10c023729b6fd35b452 (diff)
downloadzcatch-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-xscripts/compiler.py12
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()