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

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: popt                             Date:   27-Jun-2016 05:00:40
  Branch: HEAD                             Handle: 2016062703004000

  Modified files:
    popt                    CHANGES popt.c poptconfig.c poptint.h

  Log:
    - fix: free con->os->nextArg when used (memory leaks).
    - enable SUPPORT_GLOBAL_CALCULATOR.
    - revert to SUPPORT_CONTIGUOUS_ARGV: alias/exec have memroy leaks.
    - add poptGlob_pattern_p() always (portability).

  Summary:
    Revision    Changes     Path
    1.200       +4  -0      popt/CHANGES
    1.166       +12 -13     popt/popt.c
    1.67        +2  -4      popt/poptconfig.c
    1.47        +3  -0      popt/poptint.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: popt/CHANGES
  ============================================================================
  $ cvs diff -u -r1.199 -r1.200 CHANGES
  --- popt/CHANGES      24 Jun 2016 19:04:19 -0000      1.199
  +++ popt/CHANGES      27 Jun 2016 03:00:40 -0000      1.200
  @@ -1,4 +1,8 @@
   1.17 -> 2.0:
  +    - jbj: fix: free con->os->nextArg when used (memory leaks).
  +    - jbj: enable SUPPORT_GLOBAL_CALCULATOR.
  +    - jbj: revert to SUPPORT_CONTIGUOUS_ARGV: alias/exec have memroy leaks.
  +    - jbj: add poptGlob_pattern_p() always (portability).
       - jbj: use poptArgvFree to avoid memory leaks.
       - jbj: i18n: update PO files (Translation Project).
       - jbj: i18n: update PO files (Translation Project).
  @@ .
  patch -p0 <<'@@ .'
  Index: popt/popt.c
  ============================================================================
  $ cvs diff -u -r1.165 -r1.166 popt.c
  --- popt/popt.c       24 Jun 2016 19:04:19 -0000      1.165
  +++ popt/popt.c       27 Jun 2016 03:00:40 -0000      1.166
  @@ -254,7 +254,7 @@
       con->os->argb = PBM_FREE(con->os->argb);
       con->os->currAlias = NULL;
       con->os->nextCharArg = NULL;
  -    con->os->nextArg = NULL;
  +    con->os->nextArg = _free(con->os->nextArg);
       con->os->next = 1;                       /* skip argv[0] */
   
       con->numLeftovers = 0;
  @@ -733,13 +733,11 @@
        /*@modifies con @*/
   {
       const char * a = NULL;
  -    char *t, *te;
       size_t tn = strlen(s) + 1;
  +    char *t = (char*) xmalloc(tn);
  +    char *te = t;
       char c;
   
  -    te = t = (char*) xmalloc(tn);
  -assert(t);   /* XXX can't happen */
  -    if (t == NULL) return NULL;
       *t = '\0';
       while ((c = *s++) != '\0') {
        switch (c) {
  @@ -760,9 +758,8 @@
   
            tn += strlen(a);
            {   size_t pos = (size_t) (te - t);
  -     /* cppcheck-suppress memleakOnRealloc  */
  -        t = (char*) xrealloc(t, tn);
  -assert(t);   /* XXX can't happen */
  +             /* cppcheck-suppress memleakOnRealloc  */
  +             t = (char*) xrealloc(t, tn);
                if (t == NULL)
                    return NULL;
                te = stpcpy(t + pos, a);
  @@ -778,7 +775,7 @@
       /* If the new string is longer than needed, shorten. */
       if ((t + tn) > te) {
   /*@-usereleased@*/   /* XXX splint can't follow the pointers. */
  -    if ((te = (char*) xrealloc(t, (size_t)(te - t))) == NULL)
  +     if ((te = (char*) xrealloc(t, (size_t)(te - t))) == NULL)
            free(t);
        t = te;
   /*@=usereleased@*/
  @@ -1311,16 +1308,16 @@
   
       switch (poptArgType(opt)) {
       case POPT_ARG_BITSET:
  -     /* XXX memory leak, application is responsible for free. */
        rc = poptSaveBits(arg.ptr, opt->argInfo, con->os->nextArg);
  +con->os->nextArg = _free(con->os->nextArg);
        /*@switchbreak@*/ break;
       case POPT_ARG_ARGV:
  -     /* XXX memory leak, application is responsible for free. */
        rc = poptSaveString(arg.ptr, opt->argInfo, con->os->nextArg);
  +con->os->nextArg = _free(con->os->nextArg);
        /*@switchbreak@*/ break;
       case POPT_ARG_STRING:
  -     /* XXX memory leak, application is responsible for free. */
  -     arg.argv[0] = (con->os->nextArg) ? xstrdup(con->os->nextArg) : NULL;
  +     arg.argv[0] = con->os->nextArg;
  +con->os->nextArg = NULL;
        /*@switchbreak@*/ break;
   
       case POPT_ARG_LONGLONG:
  @@ -1390,6 +1387,7 @@
                arg.shortp[0] = (short) aNUM;
            /*@innerbreak@*/ break;
        }
  +con->os->nextArg = _free(con->os->nextArg);
       }   /*@switchbreak@*/ break;
   
       case POPT_ARG_FLOAT:
  @@ -1431,6 +1429,7 @@
            arg.floatp[0] = (float) aDouble;
            /*@innerbreak@*/ break;
        }
  +con->os->nextArg = _free(con->os->nextArg);
       }   /*@switchbreak@*/ break;
       case POPT_ARG_MAINCALL:
   /*@-assignexpose -type@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: popt/poptconfig.c
  ============================================================================
  $ cvs diff -u -r1.66 -r1.67 poptconfig.c
  --- popt/poptconfig.c 8 Jan 2014 16:18:03 -0000       1.66
  +++ popt/poptconfig.c 27 Jun 2016 03:00:40 -0000      1.67
  @@ -42,11 +42,10 @@
   /*@=declundef =exportheader =incondefs =protoparammatch =redecl =type @*/
   #endif       /* __LCLINT__ */
   
  -#if !defined(__GLIBC__)
   /* Return nonzero if PATTERN contains any metacharacters.
      Metacharacters can be quoted with backslashes if QUOTE is nonzero.  */
   static int
  -glob_pattern_p (const char * pattern, int quote)
  +poptGlob_pattern_p (const char * pattern, int quote)
        /*@*/
   {
       const char * p;
  @@ -72,7 +71,6 @@
       }
       return 0;
   }
  -#endif       /* !defined(__GLIBC__) */
   
   #if defined(HAVE_ASSERT_H)
   #include <assert.h>
  @@ -111,7 +109,7 @@
        pat++;
   
   #if defined(HAVE_GLOB_H)
  -    if (glob_pattern_p(pat, 0)) {
  +    if (poptGlob_pattern_p(pat, 0)) {
        glob_t _g, *pglob = &_g;
   
        if (!glob(pat, poptGlobFlags, poptGlob_error, pglob)) {
  @@ .
  patch -p0 <<'@@ .'
  Index: popt/poptint.h
  ============================================================================
  $ cvs diff -u -r1.46 -r1.47 poptint.h
  --- popt/poptint.h    18 Jun 2010 01:37:21 -0000      1.46
  +++ popt/poptint.h    27 Jun 2016 03:00:40 -0000      1.47
  @@ -11,6 +11,9 @@
   
   #include <stdint.h>
   
  +#define      SUPPORT_GLOBAL_CALCULATOR       1
  +#define      SUPPORT_CONTIGUOUS_ARGV         1
  +
   /**
    * Wrapper to free(3), hides const compilation noise, permit NULL, return 
NULL.
    * @param p          memory to free
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to