public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/glib2] cve-2026-58016-f44: Update pcre to 7.6
@ 2026-08-11 10:33 Matthias Clasen
  0 siblings, 0 replies; only message in thread
From: Matthias Clasen @ 2026-08-11 10:33 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/glib2
Branch : cve-2026-58016-f44
Commit : 3c7b54fc8ba9ed62c99cf2f72d3db20b8bce99c3
Author : Matthias Clasen <mclasen@fedoraproject.org>
Date   : 2008-02-07T14:35:45+00:00
Stats  : +899/-1 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/glib2/c/3c7b54fc8ba9ed62c99cf2f72d3db20b8bce99c3?branch=cve-2026-58016-f44

Log:
Update pcre to 7.6

---
diff --git a/glib2.spec b/glib2.spec
index fff38a1..28b9d1f 100644
--- a/glib2.spec
+++ b/glib2.spec
@@ -3,7 +3,7 @@
 Summary: A library of handy utility functions
 Name: glib2
 Version: 2.15.4
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: LGPLv2+
 Group: System Environment/Libraries
 URL: http://www.gtk.org
@@ -123,6 +123,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/lib*.a
 
 %changelog
+* Thu Feb  7 2008 Matthias Clasen <mclasen@redhat.com> - 2.15.4-2
+- Update PCRE to 7.6
+
 * Mon Jan 28 2008 Matthias Clasen <mclasen@redhat.com> - 2.15.4-1
 - Update to 2.15.4
 

diff --git a/pcre76.patch b/pcre76.patch
new file mode 100644
index 0000000..90d62b8
--- /dev/null
+++ b/pcre76.patch
@@ -0,0 +1,895 @@
+diff -up glib-2.15.4/glib/pcre/pcre_get.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_get.c
+--- glib-2.15.4/glib/pcre/pcre_get.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_get.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_valid_utf8.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_valid_utf8.c
+diff -up glib-2.15.4/glib/pcre/pcre_tables.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_tables.c
+--- glib-2.15.4/glib/pcre/pcre_tables.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_tables.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_maketables.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_maketables.c
+--- glib-2.15.4/glib/pcre/pcre_maketables.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_maketables.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_study.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_study.c
+--- glib-2.15.4/glib/pcre/pcre_study.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_study.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/ucpinternal.h.prce-7.6 glib-2.15.4/glib/pcre/ucpinternal.h
+diff -up glib-2.15.4/glib/pcre/pcre_dfa_exec.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_dfa_exec.c
+--- glib-2.15.4/glib/pcre/pcre_dfa_exec.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_dfa_exec.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_compile.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_compile.c
+--- glib-2.15.4/glib/pcre/pcre_compile.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_compile.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -241,7 +241,7 @@ static const char error_texts[] =
+   /* 10 */
+   "operand of unlimited repeat could match the empty string\0"  /** DEAD **/
+   "internal error: unexpected repeat\0"
+-  "unrecognized character after (?\0"
++  "unrecognized character after (? or (?-\0"
+   "POSIX named classes are supported only within a class\0"
+   "missing )\0"
+   /* 15 */
+@@ -300,7 +300,9 @@ static const char error_texts[] =
+   "(*VERB) with an argument is not supported\0"
+   /* 60 */
+   "(*VERB) not recognized\0"
+-  "number is too big";
++  "number is too big\0"
++  "subpattern name expected\0"
++  "digit expected after (?+";
+ 
+ 
+ /* Definition to allow mutual recursion */
+@@ -372,19 +374,13 @@ ptr--;                            /* Set
+ 
+ if (c == 0) *errorcodeptr = ERR1;
+ 
+-/* Non-alphamerics are literals. For digits or letters, do an initial lookup in
+-a table. A non-zero result is something that can be returned immediately.
++/* Non-alphanumerics are literals. For digits or letters, do an initial lookup
++in a table. A non-zero result is something that can be returned immediately.
+ Otherwise further processing may be required. */
+ 
+-#ifndef EBCDIC  /* ASCII coding */
+-else if (c < '0' || c > 'z') {}                           /* Not alphameric */
++else if (c < '0' || c > 'z') {}                           /* Not alphanumeric */
+ else if ((i = escapes[c - '0']) != 0) c = i;
+ 
+-#else           /* EBCDIC coding */
+-else if (c < 'a' || (ebcdic_chartab[c] & 0x0E) == 0) {}   /* Not alphameric */
+-else if ((i = escapes[c - 0x48]) != 0)  c = i;
+-#endif
+-
+ /* Escapes that need further processing, or are illegal. */
+ 
+ else
+@@ -598,10 +594,10 @@ else
+     break;
+ 
+     /* PCRE_EXTRA enables extensions to Perl in the matter of escapes. Any
+-    other alphameric following \ is an error if PCRE_EXTRA was set; otherwise,
+-    for Perl compatibility, it is a literal. This code looks a bit odd, but
+-    there used to be some cases other than the default, and there may be again
+-    in future, so I haven't "optimized" it. */
++    other alphanumeric following \ is an error if PCRE_EXTRA was set;
++    otherwise, for Perl compatibility, it is a literal. This code looks a bit
++    odd, but there used to be some cases other than the default, and there may
++    be again in future, so I haven't "optimized" it. */
+ 
+     default:
+     if ((options & PCRE_EXTRA) != 0) switch(c)
+@@ -1382,8 +1378,9 @@ for (;;)
+ can match the empty string or not. It is called from could_be_empty()
+ below and from compile_branch() when checking for an unlimited repeat of a
+ group that can match nothing. Note that first_significant_code() skips over
+-assertions. If we hit an unclosed bracket, we return "empty" - this means we've
+-struck an inner bracket whose current branch will already have been scanned.
++backward and negative forward assertions when its final argument is TRUE. If we
++hit an unclosed bracket, we return "empty" - this means we've struck an inner
++bracket whose current branch will already have been scanned.
+ 
+ Arguments:
+   code        points to start of search
+@@ -1405,6 +1402,16 @@ for (code = first_significant_code(code 
+ 
+   c = *code;
+ 
++  /* Skip over forward assertions; the other assertions are skipped by
++  first_significant_code() with a TRUE final argument. */
++
++  if (c == OP_ASSERT)
++    {
++    do code += GET(code, 1); while (*code == OP_ALT);
++    c = *code;
++    continue;
++    }
++
+   /* Groups with zero repeats can of course be empty; skip them. */
+ 
+   if (c == OP_BRAZERO || c == OP_BRAMINZERO)
+@@ -1600,29 +1607,48 @@ return TRUE;
+ *************************************************/
+ 
+ /* This function is called when the sequence "[:" or "[." or "[=" is
+-encountered in a character class. It checks whether this is followed by an
+-optional ^ and then a sequence of letters, terminated by a matching ":]" or
+-".]" or "=]".
++encountered in a character class. It checks whether this is followed by a
++sequence of characters terminated by a matching ":]" or ".]" or "=]". If we
++reach an unescaped ']' without the special preceding character, return FALSE.
++
++Originally, this function only recognized a sequence of letters between the
++terminators, but it seems that Perl recognizes any sequence of characters,
++though of course unknown POSIX names are subsequently rejected. Perl gives an
++"Unknown POSIX class" error for [:f\oo:] for example, where previously PCRE
++didn't consider this to be a POSIX class. Likewise for [:1234:].
++
++The problem in trying to be exactly like Perl is in the handling of escapes. We
++have to be sure that [abc[:x\]pqr] is *not* treated as containing a POSIX
++class, but [abc[:x\]pqr:]] is (so that an error can be generated). The code
++below handles the special case of \], but does not try to do any other escape
++processing. This makes it different from Perl for cases such as [:l\ower:]
++where Perl recognizes it as the POSIX class "lower" but PCRE does not recognize
++"l\ower". This is a lesser evil that not diagnosing bad classes when Perl does,
++I think.
+ 
+-Argument:
++Arguments:
+   ptr      pointer to the initial [
+   endptr   where to return the end pointer
+-  cd       pointer to compile data
+ 
+ Returns:   TRUE or FALSE
+ */
+ 
+ static BOOL
+-check_posix_syntax(const uschar *ptr, const uschar **endptr, compile_data *cd)
++check_posix_syntax(const uschar *ptr, const uschar **endptr)
+ {
+ int terminator;          /* Don't combine these lines; the Solaris cc */
+ terminator = *(++ptr);   /* compiler warns about "non-constant" initializer. */
+-if (*(++ptr) == '^') ptr++;
+-while ((cd->ctypes[*ptr] & ctype_letter) != 0) ptr++;
+-if (*ptr == terminator && ptr[1] == ']')
++for (++ptr; *ptr != 0; ptr++)
+   {
+-  *endptr = ptr;
+-  return TRUE;
++  if (*ptr == '\\' && ptr[1] == ']') ptr++; else
++    {
++    if (*ptr == ']') return FALSE;
++    if (*ptr == terminator && ptr[1] == ']')
++      {
++      *endptr = ptr;
++      return TRUE;
++      }
++    }
+   }
+ return FALSE;
+ }
+@@ -2220,6 +2246,7 @@ uschar classbits[32];
+ BOOL class_utf8;
+ BOOL utf8 = (options & PCRE_UTF8) != 0;
+ uschar *class_utf8data;
++uschar *class_utf8data_base;
+ uschar utf8_char[6];
+ #else
+ BOOL utf8 = FALSE;
+@@ -2259,6 +2286,7 @@ req_caseopt = ((options & PCRE_CASELESS)
+ for (;; ptr++)
+   {
+   BOOL negate_class;
++  BOOL should_flip_negation;
+   BOOL possessive_quantifier;
+   BOOL is_quantifier;
+   BOOL is_recurse;
+@@ -2482,7 +2510,7 @@ for (;; ptr++)
+     they are encountered at the top level, so we'll do that too. */
+ 
+     if ((ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') &&
+-        check_posix_syntax(ptr, &tempptr, cd))
++        check_posix_syntax(ptr, &tempptr))
+       {
+       *errorcodeptr = (ptr[1] == ':')? ERR13 : ERR31;
+       goto FAILED;
+@@ -2507,6 +2535,12 @@ for (;; ptr++)
+       else break;
+       }
+ 
++    /* If a class contains a negative special such as \S, we need to flip the
++    negation flag at the end, so that support for characters > 255 works
++    correctly (they are all included in the class). */
++
++    should_flip_negation = FALSE;
++
+     /* Keep a count of chars with values < 256 so that we can optimize the case
+     of just a single character (as long as it's < 256). However, For higher
+     valued UTF-8 characters, we don't yet do any optimization. */
+@@ -2524,6 +2558,7 @@ for (;; ptr++)
+ #ifdef SUPPORT_UTF8
+     class_utf8 = FALSE;                       /* No chars >= 256 */
+     class_utf8data = code + LINK_SIZE + 2;    /* For UTF-8 items */
++    class_utf8data_base = class_utf8data;     /* For resetting in pass 1 */
+ #endif
+ 
+     /* Process characters until ] is reached. By writing this as a "do" it
+@@ -2539,6 +2574,18 @@ for (;; ptr++)
+         {                           /* Braces are required because the */
+         GETCHARLEN(c, ptr, ptr);    /* macro generates multiple statements */
+         }
++
++      /* In the pre-compile phase, accumulate the length of any UTF-8 extra
++      data and reset the pointer. This is so that very large classes that
++      contain a zillion UTF-8 characters no longer overwrite the work space
++      (which is on the stack). */
++
++      if (lengthptr != NULL)
++        {
++        *lengthptr += class_utf8data - class_utf8data_base;
++        class_utf8data = class_utf8data_base;
++        }
++
+ #endif
+ 
+       /* Inside \Q...\E everything is literal except \E */
+@@ -2562,7 +2609,7 @@ for (;; ptr++)
+ 
+       if (c == '[' &&
+           (ptr[1] == ':' || ptr[1] == '.' || ptr[1] == '=') &&
+-          check_posix_syntax(ptr, &tempptr, cd))
++          check_posix_syntax(ptr, &tempptr))
+         {
+         BOOL local_negate = FALSE;
+         int posix_class, taboffset, tabopt;
+@@ -2579,6 +2626,7 @@ for (;; ptr++)
+         if (*ptr == '^')
+           {
+           local_negate = TRUE;
++          should_flip_negation = TRUE;  /* Note negative special */
+           ptr++;
+           }
+ 
+@@ -2653,7 +2701,7 @@ for (;; ptr++)
+         c = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE);
+         if (*errorcodeptr != 0) goto FAILED;
+ 
+-        if (-c == ESC_b) c = '\b';       /* \b is backslash in a class */
++        if (-c == ESC_b) c = '\b';       /* \b is backspace in a class */
+         else if (-c == ESC_X) c = 'X';   /* \X is literal X in a class */
+         else if (-c == ESC_R) c = 'R';   /* \R is literal R in a class */
+         else if (-c == ESC_Q)            /* Handle start of quoted string */
+@@ -2681,6 +2729,7 @@ for (;; ptr++)
+             continue;
+ 
+             case ESC_D:
++            should_flip_negation = TRUE;
+             for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_digit];
+             continue;
+ 
+@@ -2689,6 +2738,7 @@ for (;; ptr++)
+             continue;
+ 
+             case ESC_W:
++            should_flip_negation = TRUE;
+             for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_word];
+             continue;
+ 
+@@ -2698,13 +2748,11 @@ for (;; ptr++)
+             continue;
+ 
+             case ESC_S:
++            should_flip_negation = TRUE;
+             for (c = 0; c < 32; c++) classbits[c] |= ~cbits[c+cbit_space];
+             classbits[1] |= 0x08;    /* Perl 5.004 onwards omits VT from \s */
+             continue;
+ 
+-            case ESC_E: /* Perl ignores an orphan \E */
+-            continue;
+-
+             default:    /* Not recognized; fall through */
+             break;      /* Need "default" setting to stop compiler warning. */
+             }
+@@ -2939,7 +2987,7 @@ for (;; ptr++)
+           d = check_escape(&ptr, errorcodeptr, cd->bracount, options, TRUE);
+           if (*errorcodeptr != 0) goto FAILED;
+ 
+-          /* \b is backslash; \X is literal X; \R is literal R; any other
++          /* \b is backspace; \X is literal X; \R is literal R; any other
+           special means the '-' was literal */
+ 
+           if (d < 0)
+@@ -3203,11 +3251,14 @@ we set the flag only if there is a liter
+     zeroreqbyte = reqbyte;
+ 
+     /* If there are characters with values > 255, we have to compile an
+-    extended class, with its own opcode. If there are no characters < 256,
+-    we can omit the bitmap in the actual compiled code. */
++    extended class, with its own opcode, unless there was a negated special
++    such as \S in the class, because in that case all characters > 255 are in
++    the class, so any that were explicitly given as well can be ignored. If
++    (when there are explicit characters > 255 that must be listed) there are no
++    characters < 256, we can omit the bitmap in the actual compiled code. */
+ 
+ #ifdef SUPPORT_UTF8
+-    if (class_utf8)
++    if (class_utf8 && !should_flip_negation)
+       {
+       *class_utf8data++ = XCL_END;    /* Marks the end of extra data */
+       *code++ = OP_XCLASS;
+@@ -3233,20 +3284,19 @@ we set the flag only if there is a liter
+       }
+ #endif
+ 
+-    /* If there are no characters > 255, negate the 32-byte map if necessary,
+-    and copy it into the code vector. If this is the first thing in the branch,
+-    there can be no first char setting, whatever the repeat count. Any reqbyte
+-    setting must remain unchanged after any kind of repeat. */
++    /* If there are no characters > 255, set the opcode to OP_CLASS or
++    OP_NCLASS, depending on whether the whole class was negated and whether
++    there were negative specials such as \S in the class. Then copy the 32-byte
++    map into the code vector, negating it if necessary. */
+ 
++    *code++ = (negate_class == should_flip_negation) ? OP_CLASS : OP_NCLASS;
+     if (negate_class)
+       {
+-      *code++ = OP_NCLASS;
+       if (lengthptr == NULL)    /* Save time in the pre-compile phase */
+         for (c = 0; c < 32; c++) code[c] = ~classbits[c];
+       }
+     else
+       {
+-      *code++ = OP_CLASS;
+       memcpy(code, classbits, 32);
+       }
+     code += 32;
+@@ -3882,7 +3932,9 @@ we set the flag only if there is a liter
+       int len;
+       if (*tempcode == OP_EXACT || *tempcode == OP_TYPEEXACT ||
+           *tempcode == OP_NOTEXACT)
+-        tempcode += _pcre_OP_lengths[*tempcode];
++        tempcode += _pcre_OP_lengths[*tempcode] +
++          ((*tempcode == OP_TYPEEXACT &&
++             (tempcode[3] == OP_PROP || tempcode[3] == OP_NOTPROP))? 2:0);
+       len = code - tempcode;
+       if (len > 0) switch (*tempcode)
+         {
+@@ -4109,16 +4161,13 @@ we set the flag only if there is a liter
+             *errorcodeptr = ERR58;
+             goto FAILED;
+             }
+-          if (refsign == '-')
++          recno = (refsign == '-')?
++            cd->bracount - recno + 1 : recno +cd->bracount;
++          if (recno <= 0 || recno > cd->final_bracount)
+             {
+-            recno = cd->bracount - recno + 1;
+-            if (recno <= 0)
+-              {
+-              *errorcodeptr = ERR15;
+-              goto FAILED;
+-              }
++            *errorcodeptr = ERR15;
++            goto FAILED;
+             }
+-          else recno += cd->bracount;
+           PUT2(code, 2+LINK_SIZE, recno);
+           break;
+           }
+@@ -4190,9 +4239,10 @@ we set the flag only if there is a liter
+           skipbytes = 1;
+           }
+ 
+-        /* Check for the "name" actually being a subpattern number. */
++        /* Check for the "name" actually being a subpattern number. We are
++        in the second pass here, so final_bracount is set. */
+ 
+-        else if (recno > 0)
++        else if (recno > 0 && recno <= cd->final_bracount)
+           {
+           PUT2(code, 2+LINK_SIZE, recno);
+           }
+@@ -4386,7 +4436,9 @@ we set the flag only if there is a liter
+ 
+         /* We come here from the Python syntax above that handles both
+         references (?P=name) and recursion (?P>name), as well as falling
+-        through from the Perl recursion syntax (?&name). */
++        through from the Perl recursion syntax (?&name). We also come here from
++        the Perl \k<name> or \k'name' back reference syntax and the \k{name}
++        .NET syntax. */
+ 
+         NAMED_REF_OR_RECURSE:
+         name = ++ptr;
+@@ -4398,6 +4450,11 @@ we set the flag only if there is a liter
+ 
+         if (lengthptr != NULL)
+           {
++          if (namelen == 0)
++            {
++            *errorcodeptr = ERR62;
++            goto FAILED;
++            }
+           if (*ptr != terminator)
+             {
+             *errorcodeptr = ERR42;
+@@ -4411,14 +4468,19 @@ we set the flag only if there is a liter
+           recno = 0;
+           }
+ 
+-        /* In the real compile, seek the name in the table */
++        /* In the real compile, seek the name in the table. We check the name
++        first, and then check that we have reached the end of the name in the
++        table. That way, if the name that is longer than any in the table,
++        the comparison will fail without reading beyond the table entry. */
+ 
+         else
+           {
+           slot = cd->name_table;
+           for (i = 0; i < cd->names_found; i++)
+             {
+-            if (strncmp((char *)name, (char *)slot+2, namelen) == 0) break;
++            if (strncmp((char *)name, (char *)slot+2, namelen) == 0 &&
++                slot[2+namelen] == 0)
++              break;
+             slot += cd->name_entry_size;
+             }
+ 
+@@ -4455,7 +4517,15 @@ we set the flag only if there is a liter
+           {
+           const uschar *called;
+ 
+-          if ((refsign = *ptr) == '+') ptr++;
++          if ((refsign = *ptr) == '+')
++            {
++            ptr++;
++            if (g_ascii_isdigit(*ptr) == 0)
++              {
++              *errorcodeptr = ERR63;
++              goto FAILED;
++              }
++            }
+           else if (refsign == '-')
+             {
+             if (g_ascii_isdigit(ptr[1]) == 0)
+@@ -5621,7 +5691,6 @@ to fill in forward references to subpatt
+ 
+ uschar cworkspace[COMPILE_WORK_SIZE];
+ 
+-
+ /* Set this early so that early errors get offset 0. */
+ 
+ ptr = (const uschar *)pattern;
+@@ -5782,7 +5851,7 @@ to compile parts of the pattern into; th
+ no longer needed, so hopefully this workspace will never overflow, though there
+ is a test for its doing so. */
+ 
+-cd->bracount = 0;
++cd->bracount = cd->final_bracount = 0;
+ cd->names_found = 0;
+ cd->name_entry_size = 0;
+ cd->name_table = NULL;
+@@ -5859,6 +5928,7 @@ field. Reset the bracket count and the n
+ field; this time it's used for remembering forward references to subpatterns.
+ */
+ 
++cd->final_bracount = cd->bracount;  /* Save for checking forward references */
+ cd->bracount = 0;
+ cd->names_found = 0;
+ cd->name_table = (uschar *)re + re->name_table_offset;
+diff -up glib-2.15.4/glib/pcre/makefile.msc.prce-7.6 glib-2.15.4/glib/pcre/makefile.msc
+--- glib-2.15.4/glib/pcre/makefile.msc.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/makefile.msc	2008-02-07 09:32:46.000000000 -0500
+@@ -1,49 +1,35 @@
+ TOP = ..\..\..
+ !INCLUDE ..\..\build\win32\make.msc
+ 
+-INCLUDES = \
+-	-I ..\.. \
+-	-I ..
+-	
+-DEFINES = \
+-	-DPCRE_STATIC \
+-	-DHAVE_CONFIG_H \
+-	-DHAVE_LONG_LONG_FORMAT \
+-	-DSUPPORT_UCP \
+-	-DSUPPORT_UTF8 \
+-	-DNEWLINE=-1 \
+-	-DMATCH_LIMIT=10000000 \
+-	-DMATCH_LIMIT_RECURSION=10000000 \
+-	-DMAX_NAME_SIZE=32 \
+-	-DMAX_NAME_COUNT=10000 \
+-	-DMAX_DUPLENGTH=30000 \
+-	-DLINK_SIZE=2 \
+-	-UEBCDIC \
+-	-DPOSIX_MALLOC_THRESHOLD=10
++INCLUDES = \\
++        -I ..\.. \\
++        -I ..
++        
++DEFINES = \\
++        -DPCRE_STATIC \\
++        -DHAVE_CONFIG_H \\
++        -DHAVE_LONG_LONG_FORMAT \\
++        -DSUPPORT_UCP \\
++        -DSUPPORT_UTF8 \\
++        -DNEWLINE=-1 \\
++        -DMATCH_LIMIT=10000000 \\
++        -DMATCH_LIMIT_RECURSION=10000000 \\
++        -DMAX_NAME_SIZE=32 \\
++        -DMAX_NAME_COUNT=10000 \\
++        -DMAX_DUPLENGTH=30000 \\
++        -DLINK_SIZE=2 \\
++        -DEBCDIC=0 \\
++        -DPOSIX_MALLOC_THRESHOLD=10
+ 
+-OBJECTS = \
+-	pcre_chartables.obj \
+-	pcre_compile.obj \
+-	pcre_config.obj \
+-	pcre_dfa_exec.obj \
+-	pcre_exec.obj \
+-	pcre_fullinfo.obj \
+-	pcre_get.obj \
+-	pcre_globals.obj \
+-	pcre_info.obj \
+-	pcre_maketables.obj \
+-	pcre_newline.obj \
+-	pcre_ord2utf8.obj \
+-	pcre_refcount.obj \
+-	pcre_study.obj \
+-	pcre_tables.obj \
+-	pcre_try_flipped.obj \
+-	pcre_ucp_searchfuncs.obj \
+-	pcre_valid_utf8.obj \
+-	pcre_version.obj \
+-	pcre_xclass.obj \
++OBJECTS = \\
++`
++for f in $all_files; do
++    echo "      $f.obj \\\\"
++done
++`
+ 
+ all : pcre.lib
+ 
+-pcre.lib : $(OBJECTS)
+-	lib -out:pcre.lib $(OBJECTS)
++pcre.lib : \$(OBJECTS)
++        lib -out:pcre.lib \$(OBJECTS)
++
+diff -up glib-2.15.4/glib/pcre/pcre_globals.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_globals.c
+--- glib-2.15.4/glib/pcre/pcre_globals.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_globals.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_fullinfo.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_fullinfo.c
+--- glib-2.15.4/glib/pcre/pcre_fullinfo.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_fullinfo.c	2008-02-07 09:32:46.000000000 -0500
+@@ -2,11 +2,11 @@
+ *      Perl-Compatible Regular Expressions       *
+ *************************************************/
+ 
+-/*PCRE is a library of functions to support regular expressions whose syntax
++/* PCRE is a library of functions to support regular expressions whose syntax
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_ord2utf8.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_ord2utf8.c
+--- glib-2.15.4/glib/pcre/pcre_ord2utf8.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_ord2utf8.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_try_flipped.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_try_flipped.c
+--- glib-2.15.4/glib/pcre/pcre_try_flipped.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_try_flipped.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_info.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_info.c
+--- glib-2.15.4/glib/pcre/pcre_info.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_info.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/COPYING.prce-7.6 glib-2.15.4/glib/pcre/COPYING
+diff -up glib-2.15.4/glib/pcre/pcre_refcount.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_refcount.c
+--- glib-2.15.4/glib/pcre/pcre_refcount.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_refcount.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre.h.prce-7.6 glib-2.15.4/glib/pcre/pcre.h
+--- glib-2.15.4/glib/pcre/pcre.h.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre.h	2008-02-07 09:32:46.000000000 -0500
+@@ -5,7 +5,7 @@
+ /* This is the public header file for the PCRE library, to be #included by
+ applications that call the PCRE functions.
+ 
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -42,9 +42,9 @@ POSSIBILITY OF SUCH DAMAGE.
+ /* The current PCRE version information. */
+ 
+ #define PCRE_MAJOR          7
+-#define PCRE_MINOR          4
++#define PCRE_MINOR          6
+ #define PCRE_PRERELEASE     
+-#define PCRE_DATE           2007-09-21
++#define PCRE_DATE           2008-01-28
+ 
+ /* When an application links to a PCRE DLL in Windows, the symbols that are
+ imported have to be identified as such. When building PCRE, the appropriate
+@@ -242,13 +242,6 @@ typedef struct pcre_callout_block {
+   /* ------------------------------------------------------------------ */
+ } pcre_callout_block;
+ 
+-
+-/* Indirection for store get and free functions. These can be set to
+-alternative malloc/free functions if required. Special ones are used in the
+-non-recursive case for "frames". There is also an optional callout function
+-that is triggered by the (?) regex item. For Virtual Pascal, these definitions
+-have to take another form. */
+-
+ #include "glib.h"
+ #include "galias.h"
+ 
+diff -up glib-2.15.4/glib/pcre/pcre_chartables.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_chartables.c
+--- glib-2.15.4/glib/pcre/pcre_chartables.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_chartables.c	2008-02-07 09:32:46.000000000 -0500
+@@ -1,6 +1,3 @@
+-/* This file is autogenerated by ../update-pcre/update.sh during
+- * the update of the local copy of PCRE.
+- */
+ /*************************************************
+ *      Perl-Compatible Regular Expressions       *
+ *************************************************/
+diff -up glib-2.15.4/glib/pcre/pcre_config.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_config.c
+--- glib-2.15.4/glib/pcre/pcre_config.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_config.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_internal.h.prce-7.6 glib-2.15.4/glib/pcre/pcre_internal.h
+--- glib-2.15.4/glib/pcre/pcre_internal.h.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_internal.h	2008-02-07 09:32:46.000000000 -0500
+@@ -7,7 +7,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -363,6 +363,7 @@ never be called in byte mode. To make su
+ support is omitted, we don't even define it. */
+ 
+ #ifndef SUPPORT_UTF8
++#define NEXTCHAR(p) p++;
+ #define GETCHAR(c, eptr) c = *eptr;
+ #define GETCHARTEST(c, eptr) c = *eptr;
+ #define GETCHARINC(c, eptr) c = *eptr++;
+@@ -372,6 +373,13 @@ support is omitted, we don't even define
+ 
+ #else   /* SUPPORT_UTF8 */
+ 
++/* Advance a character pointer one byte in non-UTF-8 mode and by one character
++in UTF-8 mode. */
++
++#define NEXTCHAR(p) \
++  p++; \
++  if (utf8) { while((*p & 0xc0) == 0x80) p++; }
++
+ /* Get the next UTF-8 character, not advancing the pointer. This is called when
+ we know we are in UTF-8 mode. */
+ 
+@@ -868,7 +876,7 @@ enum { ERR0,  ERR1,  ERR2,  ERR3,  ERR4,
+        ERR30, ERR31, ERR32, ERR33, ERR34, ERR35, ERR36, ERR37, ERR38, ERR39,
+        ERR40, ERR41, ERR42, ERR43, ERR44, ERR45, ERR46, ERR47, ERR48, ERR49,
+        ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59,
+-       ERR60, ERR61 };
++       ERR60, ERR61, ERR62, ERR63 };
+ 
+ /* The real format of the start of the pcre block; the index of names and the
+ code vector run on as long as necessary after the end. We store an explicit
+@@ -931,7 +939,8 @@ typedef struct compile_data {
+   uschar *name_table;           /* The name/number table */
+   int  names_found;             /* Number of entries so far */
+   int  name_entry_size;         /* Size of each entry */
+-  int  bracount;                /* Count of capturing parens */
++  int  bracount;                /* Count of capturing parens as we compile */
++  int  final_bracount;          /* Saved value after first pass */
+   int  top_backref;             /* Maximum back reference */
+   unsigned int backref_map;     /* Bitmap of low back refs */
+   int  external_options;        /* External (initial) options */
+@@ -1033,7 +1042,7 @@ typedef struct dfa_match_data {
+ #define ctype_letter  0x02
+ #define ctype_digit   0x04
+ #define ctype_xdigit  0x08
+-#define ctype_word    0x10   /* alphameric or '_' */
++#define ctype_word    0x10   /* alphanumeric or '_' */
+ #define ctype_meta    0x80   /* regexp meta char or zero (end pattern) */
+ 
+ /* Offsets for the bitmap tables in pcre_cbits. Each table contains a set
+diff -up glib-2.15.4/glib/pcre/Makefile.am.prce-7.6 glib-2.15.4/glib/pcre/Makefile.am
+diff -up glib-2.15.4/glib/pcre/Makefile.in.prce-7.6 glib-2.15.4/glib/pcre/Makefile.in
+diff -up glib-2.15.4/glib/pcre/pcre_xclass.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_xclass.c
+--- glib-2.15.4/glib/pcre/pcre_xclass.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_xclass.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_version.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_version.c
+--- glib-2.15.4/glib/pcre/pcre_version.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_version.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_ucp_searchfuncs.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_ucp_searchfuncs.c
+diff -up glib-2.15.4/glib/pcre/ucp.h.prce-7.6 glib-2.15.4/glib/pcre/ucp.h
+diff -up glib-2.15.4/glib/pcre/pcre_newline.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_newline.c
+--- glib-2.15.4/glib/pcre/pcre_newline.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_newline.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+diff -up glib-2.15.4/glib/pcre/pcre_exec.c.prce-7.6 glib-2.15.4/glib/pcre/pcre_exec.c
+--- glib-2.15.4/glib/pcre/pcre_exec.c.prce-7.6	2008-02-07 09:32:09.000000000 -0500
++++ glib-2.15.4/glib/pcre/pcre_exec.c	2008-02-07 09:32:46.000000000 -0500
+@@ -6,7 +6,7 @@
+ and semantics are as close as possible to those of the Perl 5 language.
+ 
+                        Written by Philip Hazel
+-           Copyright (c) 1997-2007 University of Cambridge
++           Copyright (c) 1997-2008 University of Cambridge
+ 
+ -----------------------------------------------------------------------------
+ Redistribution and use in source and binary forms, with or without
+@@ -4670,10 +4670,10 @@ for(;;)
+     if (first_byte_caseless)
+       while (start_match < end_subject &&
+              md->lcc[*start_match] != first_byte)
+-        start_match++;
++        { NEXTCHAR(start_match); }
+     else
+       while (start_match < end_subject && *start_match != first_byte)
+-        start_match++;
++        { NEXTCHAR(start_match); }
+     }
+ 
+   /* Or to just after a linebreak for a multiline match if possible */
+@@ -4683,7 +4683,7 @@ for(;;)
+     if (start_match > md->start_subject + start_offset)
+       {
+       while (start_match <= end_subject && !WAS_NEWLINE(start_match))
+-        start_match++;
++        { NEXTCHAR(start_match); }
+ 
+       /* If we have just passed a CR and the newline option is ANY or ANYCRLF,
+       and we are now at a LF, advance the match position by one more character.
+@@ -4704,7 +4704,9 @@ for(;;)
+     while (start_match < end_subject)
+       {
+       register unsigned int c = *start_match;
+-      if ((start_bits[c/8] & (1 << (c&7))) == 0) start_match++; else break;
++      if ((start_bits[c/8] & (1 << (c&7))) == 0)
++        { NEXTCHAR(start_match); }
++      else break;
+       }
+     }
+ 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-11 10:33 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-11 10:33 [rpms/glib2] cve-2026-58016-f44: Update pcre to 7.6 Matthias Clasen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox