RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [email protected]
  Module: rpm                              Date:   04-Mar-2010 21:55:32
  Branch: HEAD                             Handle: 2010030420553101

  Modified files:
    rpm                     CHANGES
    rpm/rpmio               mire.c mire.h

  Log:
    - mireRegexec: return -1 error instead of segfault when mis-used.

  Summary:
    Revision    Changes     Path
    1.3282      +1  -0      rpm/CHANGES
    1.55        +9  -2      rpm/rpmio/mire.c
    1.32        +2  -0      rpm/rpmio/mire.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.3281 -r1.3282 CHANGES
  --- rpm/CHANGES       4 Mar 2010 20:53:17 -0000       1.3281
  +++ rpm/CHANGES       4 Mar 2010 20:55:31 -0000       1.3282
  @@ -1,5 +1,6 @@
   
   5.2b1 -> 5.3a1
  +    - jbj: mireRegexec: return -1 error instead of segfault when mis-used.
       - jbj: argv: use stricter RPMstr_t/RPMint_t types instead of void *.
       - devzero2000: add an rpm-arg-max-doc.spec toy test spec in tests
       - proyvind: python: make sure that we always use our own rpm build and
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/mire.c
  ============================================================================
  $ cvs diff -u -r1.54 -r1.55 mire.c
  --- rpm/rpmio/mire.c  15 Dec 2009 02:36:01 -0000      1.54
  +++ rpm/rpmio/mire.c  4 Mar 2010 20:55:32 -0000       1.55
  @@ -394,10 +394,12 @@
   
   int mireRegexec(miRE mire, const char * val, size_t vallen)
   {
  -    int rc = 0;
  +    int rc = -1;     /* assume failure */
   
       switch (mire->mode) {
       case RPMMIRE_STRCMP:
  +     if (mire->pattern == NULL)
  +         break;
        if (vallen == 0)
            vallen = strlen(val);
        /* XXX strcasecmp? */
  @@ -406,6 +408,8 @@
        break;
       case RPMMIRE_DEFAULT:
       case RPMMIRE_REGEX:
  +     if (mire->preg == NULL)
  +         break;
        /* XXX rpmgrep: ensure that the string is NUL terminated. */
        if (vallen > 0) {
            if (val[vallen] != '\0') {
  @@ -435,6 +439,8 @@
        break;
       case RPMMIRE_PCRE:
   #ifdef       WITH_PCRE
  +     if (mire->pcre == NULL)
  +         break;
        if (vallen == 0)
            vallen = strlen(val);
        rc = pcre_exec(mire->pcre, mire->hints, val, (int)vallen, 
mire->startoff,
  @@ -452,6 +458,8 @@
   #endif
        break;
       case RPMMIRE_GLOB:
  +     if (mire->pattern == NULL)
  +         break;
        rc = fnmatch(mire->pattern, val, mire->fnflags);
        switch (rc) {
        case 0:                 rc = 0; /*...@innerbreak@*/ break;
  @@ -465,7 +473,6 @@
        }
        break;
       default:
  -     rc = -1;
        break;
       }
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/mire.h
  ============================================================================
  $ cvs diff -u -r1.31 -r1.32 mire.h
  --- rpm/rpmio/mire.h  13 May 2009 19:44:20 -0000      1.31
  +++ rpm/rpmio/mire.h  4 Mar 2010 20:55:32 -0000       1.32
  @@ -6,6 +6,8 @@
    * RPM pattern matching.
    */
   
  +#include <rpmiotypes.h>
  +
   /*...@-noparams@*/
   #include <fnmatch.h>
   /*...@=noparams@*/
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to