version 1.9, 2017/05/26 20:34:49 |
version 1.10, 2017/05/31 09:15:42 |
|
|
buf->off = buf->size; |
buf->off = buf->size; |
return; |
return; |
} |
} |
if (sshbuf_check_sanity(buf) == 0) |
(void) sshbuf_check_sanity(buf); |
explicit_bzero(buf->d, buf->alloc); |
|
buf->off = buf->size = 0; |
buf->off = buf->size = 0; |
if (buf->alloc != SSHBUF_SIZE_INIT) { |
if (buf->alloc != SSHBUF_SIZE_INIT) { |
if ((d = realloc(buf->d, SSHBUF_SIZE_INIT)) != NULL) { |
if ((d = recallocarray(buf->d, buf->alloc, SSHBUF_SIZE_INIT, |
|
1)) != NULL) { |
buf->cd = buf->d = d; |
buf->cd = buf->d = d; |
buf->alloc = SSHBUF_SIZE_INIT; |
buf->alloc = SSHBUF_SIZE_INIT; |
} |
} |
} |
} else |
|
explicit_bzero(buf->d, SSHBUF_SIZE_INIT); |
} |
} |
|
|
size_t |
size_t |
|
|
rlen = ROUNDUP(buf->size, SSHBUF_SIZE_INC); |
rlen = ROUNDUP(buf->size, SSHBUF_SIZE_INC); |
if (rlen > max_size) |
if (rlen > max_size) |
rlen = max_size; |
rlen = max_size; |
explicit_bzero(buf->d + buf->size, buf->alloc - buf->size); |
|
SSHBUF_DBG(("new alloc = %zu", rlen)); |
SSHBUF_DBG(("new alloc = %zu", rlen)); |
if ((dp = realloc(buf->d, rlen)) == NULL) |
if ((dp = recallocarray(buf->d, buf->alloc, rlen, 1)) == NULL) |
return SSH_ERR_ALLOC_FAIL; |
return SSH_ERR_ALLOC_FAIL; |
buf->cd = buf->d = dp; |
buf->cd = buf->d = dp; |
buf->alloc = rlen; |
buf->alloc = rlen; |
|
|
if (rlen > buf->max_size) |
if (rlen > buf->max_size) |
rlen = buf->alloc + need; |
rlen = buf->alloc + need; |
SSHBUF_DBG(("adjusted rlen %zu", rlen)); |
SSHBUF_DBG(("adjusted rlen %zu", rlen)); |
if ((dp = realloc(buf->d, rlen)) == NULL) { |
if ((dp = recallocarray(buf->d, buf->alloc, rlen, 1)) == NULL) { |
SSHBUF_DBG(("realloc fail")); |
SSHBUF_DBG(("realloc fail")); |
return SSH_ERR_ALLOC_FAIL; |
return SSH_ERR_ALLOC_FAIL; |
} |
} |