mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-05-28 23:34:49 -05:00
Fix undefined behaviour in safegrowarray.
UBsan points out that if the input pointer is NULL, we'll pass it to memcpy, which is technically illegal by the C standard _even_ if the length you pass with it is zero. (cherry picked from commit 88d5948ead1226a0e364980d93d19fb9f5124f33)
This commit is contained in:
parent
ae84c959ac
commit
2c66217af8
8
memory.c
8
memory.c
@ -121,9 +121,11 @@ void *safegrowarray(void *ptr, size_t *allocated, size_t eltsize,
|
||||
void *toret;
|
||||
if (secret) {
|
||||
toret = safemalloc(newsize, eltsize, 0);
|
||||
memcpy(toret, ptr, oldsize * eltsize);
|
||||
smemclr(ptr, oldsize * eltsize);
|
||||
sfree(ptr);
|
||||
if (oldsize) {
|
||||
memcpy(toret, ptr, oldsize * eltsize);
|
||||
smemclr(ptr, oldsize * eltsize);
|
||||
sfree(ptr);
|
||||
}
|
||||
} else {
|
||||
toret = saferealloc(ptr, newsize, eltsize);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user