------- You are receiving this mail because: -------
You are on the CC list for the bug.
http://bugs.exim.org/show_bug.cgi?id=1134
Summary: pcre_fullinfo gives incorrect info for
PCRE_INFO_STUDYSIZE
Product: PCRE
Version: 8.12
Platform: Other
OS/Version: All
Status: NEW
Severity: bug
Priority: medium
Component: Code
AssignedTo: ph10@???
ReportedBy: exim@???
CC: pcre-dev@???
pcre_study uses malloc to get a single block of data to contain both a
pcre_extra block and a pcre_study_data block. The length of the pcre_study_data
block is stored within it.
This data is returned to the calling application and thereafter used as the
"extra" parameter. Its structure is unknown to the caller but pcre_fullinfo can
be used to obtain its size (so that it can be copied, for example). However,
the length given is that stored in the pcre_study_data block - that is, it is
short by sizeof (pcre_extra).
As the length field exists only for the benefit of pcre_fullinfo, the following
change fixes the problem (revision number is per my own SVN repository):
Index: pcre_study.c
===================================================================
--- pcre_study.c (revision 10122)
+++ pcre_study.c (working copy)
@@ -1108,7 +1108,7 @@
extra->flags = PCRE_EXTRA_STUDY_DATA;
extra->study_data = study;
-study->size = sizeof(pcre_study_data);
+study->size = sizeof(pcre_extra) + sizeof(pcre_study_data);
study->flags = 0;
if (bits_set)
--
Configure bugmail:
http://bugs.exim.org/userprefs.cgi?tab=email