Skip to content

Commit

Permalink
Make sure that some memory zeroing always happens.
Browse files Browse the repository at this point in the history
  • Loading branch information
Wayne Davison committed Jan 8, 2019
1 parent 4816317 commit c376170
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 5 deletions.
8 changes: 4 additions & 4 deletions authenticate.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,8 @@ static const char *check_secret(int module, const char *user, const char *group,

fclose(fh);

memset(line, 0, sizeof line);
memset(pass2, 0, sizeof pass2);
force_memzero(line, sizeof line);
force_memzero(pass2, sizeof pass2);

return err;
}
Expand Down Expand Up @@ -318,8 +318,8 @@ char *auth_server(int f_in, int f_out, int module, const char *host,
err = check_secret(module, line, group, challenge, pass);
}

memset(challenge, 0, sizeof challenge);
memset(pass, 0, strlen(pass));
force_memzero(challenge, sizeof challenge);
force_memzero(pass, strlen(pass));

if (auth_uid_groups) {
int j;
Expand Down
4 changes: 3 additions & 1 deletion fileio.c
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,9 @@ int unmap_file(struct map_struct *map)
map->p = NULL;
}
ret = map->status;
memset(map, 0, sizeof map[0]);
#if 0 /* I don't think we really need this. */
force_memzero(map, sizeof map[0]);
#endif
free(map);

return ret;
Expand Down
8 changes: 8 additions & 0 deletions util.c
Original file line number Diff line number Diff line change
Expand Up @@ -1682,3 +1682,11 @@ void *expand_item_list(item_list *lp, size_t item_size,
}
return (char*)lp->items + (lp->count++ * item_size);
}

/* This zeroing of memory won't be optimized away by the compiler. */
void force_memzero(void *buf, size_t len)
{
volatile uchar *z = buf;
while (len-- > 0)
*z++ = '\0';
}

0 comments on commit c376170

Please sign in to comment.