Browse Source

use volatile pointers for intentional-crash code.

Rich Felker 13 years ago
parent
commit
71a80c5767
2 changed files with 3 additions and 3 deletions
  1. 2 2
      src/malloc/malloc.c
  2. 1 1
      src/time/__asctime.c

+ 2 - 2
src/malloc/malloc.c

@@ -395,7 +395,7 @@ void *realloc(void *p, size_t n)
 		size_t oldlen = n0 + extra;
 		size_t newlen = n + extra;
 		/* Crash on realloc of freed chunk */
-		if ((uintptr_t)base < mal.brk) *(char *)0=0;
+		if ((uintptr_t)base < mal.brk) *(volatile char *)0=0;
 		if (newlen < PAGE_SIZE && (new = malloc(n))) {
 			memcpy(new, p, n-OVERHEAD);
 			free(p);
@@ -458,7 +458,7 @@ void free(void *p)
 		char *base = (char *)self - extra;
 		size_t len = CHUNK_SIZE(self) + extra;
 		/* Crash on double free */
-		if ((uintptr_t)base < mal.brk) *(char *)0=0;
+		if ((uintptr_t)base < mal.brk) *(volatile char *)0=0;
 		__munmap(base, len);
 		return;
 	}

+ 1 - 1
src/time/__asctime.c

@@ -21,7 +21,7 @@ char *__asctime(const struct tm *tm, char *buf)
 		 * application developers that they may not be so lucky
 		 * on other implementations (e.g. stack smashing..).
 		 */
-		*(int*)0 = 0;
+		*(volatile int*)0 = 0;
 	}
 	return buf;
 }