PYTHON-2191 Fix double free when realloc fails in buffer_grow

This commit is contained in:
Shane Harvey 2020-04-07 14:41:37 -07:00
parent 24e8aebf12
commit 021adc53e8

View File

@ -53,7 +53,10 @@ int buffer_free(buffer_t buffer) {
if (buffer == NULL) {
return 1;
}
free(buffer->buffer);
/* Buffer will be NULL when buffer_grow fails. */
if (buffer->buffer != NULL) {
free(buffer->buffer);
}
free(buffer);
return 0;
}
@ -79,7 +82,6 @@ static int buffer_grow(buffer_t buffer, int min_length) {
buffer->buffer = (char*)realloc(buffer->buffer, sizeof(char) * size);
if (buffer->buffer == NULL) {
free(old_buffer);
free(buffer);
return 1;
}
buffer->size = size;