summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/regress/lib/libc/malloc/malloc0test/malloc0test.c27
1 files changed, 7 insertions, 20 deletions
diff --git a/src/regress/lib/libc/malloc/malloc0test/malloc0test.c b/src/regress/lib/libc/malloc/malloc0test/malloc0test.c
index a782424ba1..eb00954f92 100644
--- a/src/regress/lib/libc/malloc/malloc0test/malloc0test.c
+++ b/src/regress/lib/libc/malloc/malloc0test/malloc0test.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: malloc0test.c,v 1.3 2004/02/11 08:16:00 deraadt Exp $ */ 1/* $OpenBSD: malloc0test.c,v 1.4 2004/08/04 12:02:57 otto Exp $ */
2/* 2/*
3 * Public domain. 2001, Theo de Raadt 3 * Public domain. 2001, Theo de Raadt
4 */ 4 */
@@ -58,10 +58,8 @@ char *prot_table[] = {
58int 58int
59main(int argc, char *argv[]) 59main(int argc, char *argv[])
60{ 60{
61 caddr_t rblob = malloc(1); 61 caddr_t blob;
62 caddr_t zblob = malloc(0); 62 int size, tsize;
63 caddr_t *blobp, blob;
64 int size, rsize, tsize;
65 int prot; 63 int prot;
66 int rval = 0, fuckup = 0; 64 int rval = 0, fuckup = 0;
67 long limit = 200000, count; 65 long limit = 200000, count;
@@ -101,32 +99,21 @@ usage:
101 exit(rval); 99 exit(rval);
102 } 100 }
103 101
104 if (size == 0) { 102 tsize = size == 0 ? 16 : size;
105 blobp = &zblob; 103 fuckup = 0;
106 tsize = 16;
107 } else {
108 blobp = &rblob;
109 tsize = size;
110 }
111
112 rsize = blob - *blobp;
113 fuckup = SIZE < 16 && size >= rsize;
114 prot = test(blob, tsize); 104 prot = test(blob, tsize);
115 105
116 if (size == 0 && rsize < 16)
117 fuckup = 1;
118 if (size == 0 && prot < 2) 106 if (size == 0 && prot < 2)
119 fuckup = 1; 107 fuckup = 1;
120 108
121 if (fuckup) { 109 if (fuckup) {
122 printf("%8p %6d %6d %20s %10s\n", blob, size, rsize, 110 printf("%8p %6d %20s %10s\n", blob, size,
123 prot_table[prot], fuckup ? "fuckup" : ""); 111 prot_table[prot], fuckup ? "fuckup" : "");
124 rval = 1; 112 rval = 1;
125 } 113 }
126 *blobp = blob;
127 114
128 if (!silent && count % 100000 == 0 && count != 0) 115 if (!silent && count % 100000 == 0 && count != 0)
129 fprintf(stderr, "count = %d\n", count); 116 fprintf(stderr, "count = %ld\n", count);
130 } 117 }
131 118
132 return rval; 119 return rval;