[pcre-dev] [Bug 1134] New: pcre_fullinfo gives incorrect inf…

Top Page
Delete this message
Author: Richard Smith
Date:  
To: pcre-dev
Subject: [pcre-dev] [Bug 1134] New: pcre_fullinfo gives incorrect info for PCRE_INFO_STUDYSIZE
------- 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