Fix memory leak when deserializing invalid data (Bugzilla 2075).

This commit is contained in:
Philip.Hazel 2017-03-21 16:25:01 +00:00
parent 8e4eb8dbc8
commit e105a0f83f
2 changed files with 6 additions and 1 deletions

View File

@ -71,6 +71,8 @@ available, and into a new section that is always compiled for Windows.
10. In pcre2test, explicitly close the file after an error during serialization 10. In pcre2test, explicitly close the file after an error during serialization
or deserialization (the "load" or "save" commands). or deserialization (the "load" or "save" commands).
11. Fix memory leak in pcre2_serialize_decode() when the input is invalid.
Version 10.23 14-February-2017 Version 10.23 14-February-2017
------------------------------ ------------------------------

View File

@ -7,7 +7,7 @@ and semantics are as close as possible to those of the Perl 5 language.
Written by Philip Hazel Written by Philip Hazel
Original API code Copyright (c) 1997-2012 University of Cambridge Original API code Copyright (c) 1997-2012 University of Cambridge
New API code Copyright (c) 2016 University of Cambridge New API code Copyright (c) 2016-2017 University of Cambridge
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
@ -214,7 +214,10 @@ for (i = 0; i < number_of_codes; i++)
if (dst_re->magic_number != MAGIC_NUMBER || if (dst_re->magic_number != MAGIC_NUMBER ||
dst_re->name_entry_size > MAX_NAME_SIZE + IMM2_SIZE + 1 || dst_re->name_entry_size > MAX_NAME_SIZE + IMM2_SIZE + 1 ||
dst_re->name_count > MAX_NAME_COUNT) dst_re->name_count > MAX_NAME_COUNT)
{
memctl->free(dst_re, memctl->memory_data);
return PCRE2_ERROR_BADSERIALIZEDDATA; return PCRE2_ERROR_BADSERIALIZEDDATA;
}
/* At the moment only one table is supported. */ /* At the moment only one table is supported. */