summaryrefslogtreecommitdiff
path: root/bootstrap/jamvm-1.5.1/jamvm-1.5.1-san-fixes.patch
blob: c251fb80f4184317ee5a78daa318b3faa3c78ca8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Fixes issues caught by ASan and UBSan.

diff -ur jamvm-1.5.1-old/src/alloc.c jamvm-1.5.1/src/alloc.c
--- jamvm-1.5.1-old/src/alloc.c	2008-02-21 19:57:42.000000000 -0600
+++ jamvm-1.5.1/src/alloc.c	2024-09-12 13:51:52.050426782 -0500
@@ -69,8 +69,8 @@
 /* Bits used within the chunk header (see also alloc.h) */
 #define ALLOC_BIT               1
 #define SPECIAL_BIT             4
-#define HAS_HASHCODE_BIT        (1<<31)
-#define HASHCODE_TAKEN_BIT      (1<<30)
+#define HAS_HASHCODE_BIT        (1u<<31)
+#define HASHCODE_TAKEN_BIT      (1u<<30)
 
 #define HDR_FLAGS_MASK          ~(ALLOC_BIT|FLC_BIT|SPECIAL_BIT| \
                                   HAS_HASHCODE_BIT|HASHCODE_TAKEN_BIT)
diff -ur jamvm-1.5.1-old/src/class.c jamvm-1.5.1/src/class.c
--- jamvm-1.5.1-old/src/class.c	2008-03-07 19:22:34.000000000 -0600
+++ jamvm-1.5.1/src/class.c	2024-09-12 13:44:19.108561458 -0500
@@ -603,7 +603,7 @@
         if(classname[1] == 'L') {
             char element_name[len-2];
 
-            strcpy(element_name, classname + 2);
+            strncpy(element_name, classname + 2, len-3);
             element_name[len-3] = '\0';
             classblock->element_class = findClassFromClassLoader(element_name, class_loader);
         } else
diff -ur jamvm-1.5.1-old/src/class.h jamvm-1.5.1/src/class.h
--- jamvm-1.5.1-old/src/class.h	2024-09-12 14:29:40.379457916 -0500
+++ jamvm-1.5.1/src/class.h	2024-09-12 13:53:46.438270697 -0500
@@ -25,7 +25,7 @@
 
 #define READ_U1(v,p,l)  v = *(p)++
 #define READ_U2(v,p,l)  v = ((p)[0]<<8)|(p)[1]; (p)+=2
-#define READ_U4(v,p,l)  v = ((p)[0]<<24)|((p)[1]<<16)|((p)[2]<<8)|(p)[3]; (p)+=4
+#define READ_U4(v,p,l)  v = ((u4)(p)[0]<<24)|((u4)(p)[1]<<16)|((u4)(p)[2]<<8)|(u4)(p)[3]; (p)+=4
 #define READ_U8(v,p,l)  v = ((u8)(p)[0]<<56)|((u8)(p)[1]<<48)|((u8)(p)[2]<<40) \
                             |((u8)(p)[3]<<32)|((u8)(p)[4]<<24)|((u8)(p)[5]<<16) \
                             |((u8)(p)[6]<<8)|(u8)(p)[7]; (p)+=8
diff -ur jamvm-1.5.1-old/src/lock.c jamvm-1.5.1/src/lock.c
--- jamvm-1.5.1-old/src/lock.c	2008-03-06 04:42:14.000000000 -0600
+++ jamvm-1.5.1/src/lock.c	2024-09-12 14:26:11.631626642 -0500
@@ -75,7 +75,7 @@
 
 #define TID_SHIFT   (COUNT_SIZE+COUNT_SHIFT)
 #define TID_SIZE    (32-TID_SHIFT)
-#define TID_MASK    (((1<<TID_SIZE)-1)<<TID_SHIFT)
+#define TID_MASK    (((1u<<TID_SIZE)-1)<<TID_SHIFT)
 
 #define SCAVENGE(ptr)                                           \
 ({                                                              \