diff options
| author | otto <> | 2004-08-04 12:02:57 +0000 |
|---|---|---|
| committer | otto <> | 2004-08-04 12:02:57 +0000 |
| commit | 415f261db2ca71bc85aa7ef5d1e11cfe431f0a9b (patch) | |
| tree | 137f7cc235e7776e4dde5019f291a4b6beb718e4 | |
| parent | 6feaf8a13f233b83f5a0ca30950478ec00aef85b (diff) | |
| download | openbsd-415f261db2ca71bc85aa7ef5d1e11cfe431f0a9b.tar.gz openbsd-415f261db2ca71bc85aa7ef5d1e11cfe431f0a9b.tar.bz2 openbsd-415f261db2ca71bc85aa7ef5d1e11cfe431f0a9b.zip | |
Unbreak malloc0test for use with mmap malloc which allocates objects
in a non-contiguous manner. ok art@
| -rw-r--r-- | src/regress/lib/libc/malloc/malloc0test/malloc0test.c | 27 |
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[] = { | |||
| 58 | int | 58 | int |
| 59 | main(int argc, char *argv[]) | 59 | main(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; |
