Fix valgrind warnings for unset padding at the end of the pcre2_real_code
structure.
This commit is contained in:
parent
0cb5a91218
commit
bd511d381f
|
@ -126,6 +126,11 @@ pcre2_set_heap_limit() or (*LIMIT_HEAP=xxx). Upgraded pcre2test to show the
|
||||||
heap limit along with other pattern information, and to find the minimum when
|
heap limit along with other pattern information, and to find the minimum when
|
||||||
the find_limits modifier is set.
|
the find_limits modifier is set.
|
||||||
|
|
||||||
|
23. Write to the last 8 bytes of the pcre2_real_code structure when a compiled
|
||||||
|
pattern is set up so as to initialize any padding the compiler might have
|
||||||
|
included. This avoids valgrind warnings when a compiled pattern is copied, in
|
||||||
|
particular when it is serialized.
|
||||||
|
|
||||||
|
|
||||||
Version 10.23 14-February-2017
|
Version 10.23 14-February-2017
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
|
@ -9284,6 +9284,13 @@ if (re == NULL)
|
||||||
goto HAD_CB_ERROR;
|
goto HAD_CB_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The compiler may put padding at the end of the pcre2_real_code structure in
|
||||||
|
order to round it up to a multiple of 4 or 8 bytes. This means that when a
|
||||||
|
compiled pattern is copied (for example, when serialized) undefined bytes are
|
||||||
|
read, and this annoys debuggers such as valgrind. To avoid this, we explicitly
|
||||||
|
write to the last 8 bytes of the structure before setting the fields. */
|
||||||
|
|
||||||
|
memset((char *)re + sizeof(pcre2_real_code) - 8, 0, 8);
|
||||||
re->memctl = ccontext->memctl;
|
re->memctl = ccontext->memctl;
|
||||||
re->tables = tables;
|
re->tables = tables;
|
||||||
re->executable_jit = NULL;
|
re->executable_jit = NULL;
|
||||||
|
|
Loading…
Reference in New Issue