diff options
| author | Alexander Monakov <amonakov@ispras.ru> | 2017-06-27 20:58:47 +0300 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2017-07-04 17:11:33 -0400 | 
| commit | 60ab365cae24063b0f21821860ca16fb63e81f81 (patch) | |
| tree | 0c6f5611824e45ae2c5e72a618703ef3c24a4957 /src/malloc | |
| parent | f6888840613a510c99915ba7732df8ec54d52637 (diff) | |
| download | musl-60ab365cae24063b0f21821860ca16fb63e81f81.tar.gz | |
fix undefined behavior in free
Diffstat (limited to 'src/malloc')
| -rw-r--r-- | src/malloc/malloc.c | 5 | 
1 files changed, 3 insertions, 2 deletions
| diff --git a/src/malloc/malloc.c b/src/malloc/malloc.c index d5ee4280..9e05e1d6 100644 --- a/src/malloc/malloc.c +++ b/src/malloc/malloc.c @@ -450,14 +450,15 @@ copy_realloc:  void free(void *p)  { -	struct chunk *self = MEM_TO_CHUNK(p); -	struct chunk *next; +	struct chunk *self, *next;  	size_t final_size, new_size, size;  	int reclaim=0;  	int i;  	if (!p) return; +	self = MEM_TO_CHUNK(p); +  	if (IS_MMAPPED(self)) {  		size_t extra = self->psize;  		char *base = (char *)self - extra; | 
