Skip to content

Commit

Permalink
t/stest: confirm that scalloc clears the buffer
Browse files Browse the repository at this point in the history
Change smalloc calls to scalloc and make sure buffers are zeroed out.

Signed-off-by: Vincent Fu <[email protected]>
  • Loading branch information
vincentkfu committed Jun 11, 2024
1 parent f956fed commit c6783fc
Showing 1 changed file with 31 additions and 5 deletions.
36 changes: 31 additions & 5 deletions t/stest.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ static FLIST_HEAD(list);

static int do_rand_allocs(void)
{
unsigned int size, nr, rounds = 0, ret = 0;
unsigned int i, size, nr, rounds = 0, ret = 0;
unsigned long total;
struct elem *e;
bool error;
char *c;

while (rounds++ < LOOPS) {
#ifdef STEST_SEED
Expand All @@ -38,12 +39,26 @@ static int do_rand_allocs(void)
nr = total = 0;
while (total < MAXSMALLOC) {
size = 8 * sizeof(struct elem) + (int) (999.0 * (rand() / (RAND_MAX + 1.0)));
e = smalloc(size);
e = scalloc(1, size);
if (!e) {
printf("fail at %lu, size %u\n", total, size);
ret++;
break;
}

c = (char *)e;
for (i = 0; i < size; i++) {
if (*(c+i) != 0) {
printf("buffer not cleared at %lu, size %u\n", total, size);
ret++;
break;
}
}

/* stop the while loop if buffer was not cleared */
if (i < size)
break;

e->magic1 = MAGIC1;
e->magic2 = MAGIC2;
e->size = size;
Expand All @@ -63,15 +78,26 @@ static int do_rand_allocs(void)
sfree(e);

if (!error) {
e = smalloc(LARGESMALLOC);
e = scalloc(1, LARGESMALLOC);
if (!e) {
error = true;
ret++;
printf("failure allocating %u bytes at %lu allocated during sfree phase\n",
LARGESMALLOC, total);
break;
}
else
sfree(e);

c = (char *)e;
for (i = 0; i < LARGESMALLOC; i++) {
if (*(c+i) != 0) {
error = true;
ret++;
printf("large buffer not cleared at %lu, size %u\n", total, size);
break;
}
}

sfree(e);
}
}
}
Expand Down

0 comments on commit c6783fc

Please sign in to comment.