mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00:00
compression buffer was not reused correctly
when the compression buffer was reused for multiple statistics requests, responses could grow beyond the correct size. this was because the buffer was not cleared before reuse; compressed data was still written to the beginning of the buffer, but then the size of used region was increased by the amount written, rather than set to the amount written. this caused responses to grow larger and larger, potentially reading past the end of the allocated buffer.
This commit is contained in:
@@ -202,6 +202,8 @@ free_buffer(isc_mem_t *mctx, isc_buffer_t *buffer) {
|
||||
if (r.base != NULL) {
|
||||
isc_mem_put(mctx, r.base, r.length);
|
||||
}
|
||||
|
||||
isc_buffer_initnull(buffer);
|
||||
}
|
||||
|
||||
isc_result_t
|
||||
@@ -864,6 +866,7 @@ httpd_compress(isc_httpd_t *httpd) {
|
||||
|
||||
inputlen = isc_buffer_usedlength(&httpd->bodybuffer);
|
||||
alloc_compspace(httpd, inputlen);
|
||||
isc_buffer_clear(&httpd->compbuffer);
|
||||
isc_buffer_region(&httpd->compbuffer, &r);
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user