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]
