[CVS] RPM: rpm-5_4: rpm/build/ pack.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   12-Apr-2016 06:53:07
  Branch: rpm-5_4  Handle: 2016041204530700

  Modified files:   (Branch: rpm-5_4)
rpm/build   pack.c

  Log:
- adjust padding so that the metadata header is located at exactly
0x400.

  Summary:
RevisionChanges Path
2.324.2.18  +1  -1  rpm/build/pack.c
  

  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  
  $ cvs diff -u -r2.324.2.17 -r2.324.2.18 pack.c
  --- rpm/build/pack.c  2 Apr 2016 23:01:12 -   2.324.2.17
  +++ rpm/build/pack.c  12 Apr 2016 04:53:07 -  2.324.2.18
  @@ -926,7 +926,7 @@
   {size_t slen = 0;
void * uh = headerUnload(sigh, &slen);
static const size_t align = 1024;
  - size_t nb = align - 96 - 16 - 16;
  + size_t nb = align - 96 - 16 - 8;
rpmuint8_t * b;
   
uh = _free(uh);
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/build/ parsePreamble.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   12-Apr-2016 06:52:07
  Branch: rpm-5_4  Handle: 2016041204520700

  Modified files:   (Branch: rpm-5_4)
rpm/build   parsePreamble.c

  Log:
- permit packages without summary/description (except for PLD).

  Summary:
RevisionChanges Path
2.194.2.14  +1  -1  rpm/build/parsePreamble.c
  

  patch -p0 <<'@@ .'
  Index: rpm/build/parsePreamble.c
  
  $ cvs diff -u -r2.194.2.13 -r2.194.2.14 parsePreamble.c
  --- rpm/build/parsePreamble.c 21 Mar 2016 22:08:52 -  2.194.2.13
  +++ rpm/build/parsePreamble.c 12 Apr 2016 04:52:07 -  2.194.2.14
  @@ -30,7 +30,7 @@
   RPMTAG_DISTEPOCH,
   RPMTAG_LICENSE,
   RPMTAG_GROUP,/* XXX permissive. */
  -#if !defined(SUPPORT_I18NSTRING_TYPE)/* XXX RPM_VENDOR_PLD */
  +#if !defined(RPM_VENDOR_PLD)
   RPMTAG_SUMMARY,  /* XXX permissive. */
   RPMTAG_DESCRIPTION,  /* XXX permissive. */
   #endif
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/lib/ rpmgi.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   12-Apr-2016 00:06:30
  Branch: rpm-5_4  Handle: 2016041122063000

  Modified files:   (Branch: rpm-5_4)
rpm/lib rpmgi.c

  Log:
- improve debugging messages.

  Summary:
RevisionChanges Path
2.75.2.14   +5  -3  rpm/lib/rpmgi.c
  

  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmgi.c
  
  $ cvs diff -u -r2.75.2.13 -r2.75.2.14 rpmgi.c
  --- rpm/lib/rpmgi.c   11 Apr 2016 09:15:40 -  2.75.2.13
  +++ rpm/lib/rpmgi.c   11 Apr 2016 22:06:30 -  2.75.2.14
  @@ -245,12 +245,14 @@
   
if (rpmrc == RPMRC_OK)
break;
  +
if (gi->flags & RPMGI_NOMANIFEST) {
/* XXX remap skipped -> failed reads */
if (rpmrc == RPMRC_NOTFOUND)
gi->rc = rpmrc = RPMRC_FAIL;
break;
}
  +
if (rpmrc == RPMRC_NOSIG) {
/* XXX move error message to caller. */
rpmlog(RPMLOG_NOTICE, _("not signed: %s\n"), fn);
  @@ -460,7 +462,7 @@
   gi->mi = rpmtsInitIterator(gi->ts, gi->tag, gi->keyp, gi->keylen);
   
   if (_rpmgi_debug < 0)
  -fprintf(stderr, "*** gi %p key %p[%d]\tmi %p\n", gi, gi->keyp, 
(int)gi->keylen, gi->mi);
  +fprintf(stderr, "*** %s: gi %p key %p[%d]\tmi %p\n", __FUNCTION__, gi, 
gi->keyp, (int)gi->keylen, gi->mi);
   
   if (gi->argv != NULL)
   for (av = (const char **) gi->argv; *av != NULL; av++) {
  @@ -756,11 +758,11 @@
   case RPMDBI_ARGLIST:
/* XXX gi->active initialize? */
   if (_rpmgi_debug  < 0)
  -fprintf(stderr, "*** gi %p\t%p[%d]: %s\n", gi, gi->argv, gi->i, 
gi->argv[gi->i]);
  +fprintf(stderr, "*** %s: gi %p\t%p[%d]: %s\n", __FUNCTION__, gi, gi->argv, 
gi->i, gi->argv[gi->i]);
/* Read next header, lazily expanding manifests as found. */
rpmrc = rpmgiLoadReadHeader(gi);
   if (_rpmgi_debug  < 0)
  -fprintf(stderr, "*** rc %d gi %p\t%p[%d]: h %p %s\n", rpmrc, gi, gi->argv, 
gi->i, gi->h, gi->argv[gi->i]);
  +fprintf(stderr, "*** %s: rc %d gi %p\t%p[%d]: h %p %s\n", __FUNCTION__, 
rpmrc, gi, gi->argv, gi->i, gi->h, gi->argv[gi->i]);
/* XXX non-rpm, non-manifest, returns NOTFOUND with h == NULL */
/* Skip non-existent *.rpm and non-manifest files if more to do. */
if (rpmrc == RPMRC_NOTFOUND) {
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ tagname.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   12-Apr-2016 00:04:46
  Branch: rpm-5_4  Handle: 2016041122044600

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   tagname.c

  Log:
- tagValidate: fix: skip validating RPM_I18NSTRING_TYPE tags.
- tagValidate: fix: cannot do HE_t overrides here, damage is already done.

  Summary:
RevisionChanges Path
1.34.2.15   +10 -26 rpm/rpmdb/tagname.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tagname.c
  
  $ cvs diff -u -r1.34.2.14 -r1.34.2.15 tagname.c
  --- rpm/rpmdb/tagname.c   10 Apr 2016 22:03:54 -  1.34.2.14
  +++ rpm/rpmdb/tagname.c   11 Apr 2016 22:04:46 -  1.34.2.15
  @@ -522,34 +522,25 @@
   if (flags & HEADERGET_SIGHEADER)
return;
   
  -#if !defined(SUPPORT_I18NSTRING_TYPE)
  -/* XXX Re-map RPM_I18NSTRING_TYPE -> RPM_STRING_TYPE */
  -/* XXX FIXME: move to headerVerifyInfo()? */
  -if (he->t == RPM_I18NSTRING_TYPE)
  - he->t = RPM_STRING_TYPE;
  -#endif
  -
   /* XXX Arbitrary tags are always STRING or STRING_ARRAY. */
   if (he->tag & 0x4000) {
if (!(he->t == RPM_STRING_TYPE || he->t == RPM_STRING_ARRAY_TYPE)) {
rpmTagType tagtype = RPM_STRING_TYPE;
  - char tagn[16];
  - 
  - (void) snprintf(tagn, sizeof(tagn), "0x%08x", he->tag);
rpmlog(RPMLOG_WARNING,
  - _("tag %s(%u) type(0x%x) != expected type(0x%x), overriding 
type\n"),
  - tagn, (unsigned) he->tag, he->t, tagtype);
  - he->t = tagtype;
  - he->freeData = 0;   /* XXX better a memory leak than a segfault */
  + _("tag %s(%u) type(0x%x) != expected type(0x%x)\n"),
  + tagName(he->tag), (unsigned) he->tag, he->t, tagtype);
}
return;
   }
   
   switch (he->tag) {
  -#ifdef   DYING   /* XXX retrofitted in 
headerVerifyInfo() */
  +#if defined(SUPPORT_I18NSTRING_TYPE)
  +case RPMTAG_SUMMARY:
  +case RPMTAG_DESCRIPTION:
  +case RPMTAG_GROUP:
  +#endif
   case RPMTAG_FILESTATES:  /* XXX either CHAR or UINT8 */
break;
  -#endif
   case RPMTAG_PREINPROG:   /* XXX either STRING or STRING_ARRAY */
   case RPMTAG_POSTINPROG:  /* XXX either STRING or STRING_ARRAY */
   case RPMTAG_PREUNPROG:   /* XXX either STRING or STRING_ARRAY */
  @@ -557,25 +548,18 @@
   case RPMTAG_VERIFYSCRIPTPROG:/* XXX either STRING or STRING_ARRAY */
if (!(he->t == RPM_STRING_TYPE || he->t == RPM_STRING_ARRAY_TYPE)) {
rpmTagType tagtype = RPM_STRING_TYPE;
  - 
rpmlog(RPMLOG_WARNING,
  - _("tag %s(%u) type(0x%x) != expected type(0x%x), overriding 
type\n"),
  + _("tag %s(%u) type(0x%x) != expected type(0x%x)\n"),
tagName(he->tag), (unsigned) he->tag, he->t, tagtype);
  - he->t = tagtype;
  - he->freeData = 0;   /* XXX better a memory leak than a segfault */
}
break;
   default:
 {  rpmTagType tagtype = tagType(he->tag);
rpmTagType type = (tagtype & 0x);
  - if (he->t != type) {
  + if (type && he->t != type) {
rpmlog(RPMLOG_WARNING,
  - _("tag %s(%u) type(0x%x) != expected type(0x%x), overriding 
type\n"),
  + _("tag %s(%u) type(0x%x) != expected type(0x%x)\n"),
tagName(he->tag), (unsigned) he->tag, he->t, tagtype);
  - he->t = type;
  - if (he->t == RPM_STRING_TYPE)
  - he->c = 1;
  - he->freeData = 0;   /* XXX better a memory leak than a segfault */
}
 }  break;
   }
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ header_internal.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   12-Apr-2016 00:02:11
  Branch: rpm-5_4  Handle: 2016041122021100

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   header_internal.c

  Log:
- pubkeys: detect RPMTAG_PUBKEY type failures as early as possible.

  Summary:
RevisionChanges Path
1.20.2.5+7  -1  rpm/rpmdb/header_internal.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.c
  
  $ cvs diff -u -r1.20.2.4 -r1.20.2.5 header_internal.c
  --- rpm/rpmdb/header_internal.c   11 Apr 2016 09:12:33 -  1.20.2.4
  +++ rpm/rpmdb/header_internal.c   11 Apr 2016 22:02:11 -  1.20.2.5
  @@ -46,8 +46,14 @@
info->count = (rpmuint32_t) ntohl(pe[i].count);
   
/* XXX Convert RPMTAG_FILESTATE to RPM_UINT8_TYPE. */
  - if (info->tag == 1029 && info->type == 1) {
  + if (info->tag == 1029 && info->type == 1)
info->type = RPM_UINT8_TYPE;
  +
  + /* XXX Ensure that pubkey type is sane, fail early if not.. */
  + if (info->tag == RPMTAG_PUBKEYS
  +  && info->type != RPM_STRING_ARRAY_TYPE)
  + {
  + return (int)i;
}
   
   #ifdef   NOTYET  /* XXX more todo here */
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ header.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   12-Apr-2016 00:00:58
  Branch: rpm-5_4  Handle: 2016041122005200

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   header.c

  Log:
- header: deal with tag padding, detect STRING_ARRAY
overruns/underruns.

  Summary:
RevisionChanges Path
1.198.2.23  +16 -10 rpm/rpmdb/header.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  
  $ cvs diff -u -r1.198.2.22 -r1.198.2.23 header.c
  --- rpm/rpmdb/header.c11 Apr 2016 09:18:28 -  1.198.2.22
  +++ rpm/rpmdb/header.c11 Apr 2016 22:00:52 -  1.198.2.23
  @@ -311,7 +311,7 @@
break;
/* These are like RPM_STRING_TYPE, except they're *always* an array */
/* Compute sum of length of all strings, including nul terminators */
  -case RPM_I18NSTRING_TYPE:
  +case RPM_I18NSTRING_TYPE:/* XXX treat as raw string array. */
   case RPM_STRING_ARRAY_TYPE:
if (onDisk) {
while (count--) {
  @@ -418,8 +418,9 @@
nb = he->c * sizeof(*he->p.ui64p);
break;
   #if !defined(SUPPORT_I18NSTRING_TYPE)
  -case RPM_I18NSTRING_TYPE:
  +case RPM_I18NSTRING_TYPE:/* XXX already done? */
he->t = RPM_STRING_TYPE;
  + he->c = 1;
/*@fallthrough@*/
   #endif
   case RPM_STRING_TYPE:
  @@ -1350,6 +1351,7 @@
*/
   static int copyEntry(const indexEntry entry, HE_t he, int minMem)
   {
  +rpmTagType type = entry->info.type;
   rpmTagCount count = entry->info.count;
   int rc = 1;  /* XXX 1 on success. */
   
  @@ -1397,7 +1399,8 @@
break;
   #if !defined(SUPPORT_I18NSTRING_TYPE)
   case RPM_I18NSTRING_TYPE:
  - he->t = RPM_STRING_TYPE;
  + type = RPM_STRING_TYPE;
  + count = 1;
he->p.str = (char *) entry->data;
break;
   #endif
  @@ -1426,21 +1429,27 @@
memcpy(t, entry->data, entry->length);
t[entry->length-1] = '\0';  /* XXX ensure NUL terminated */
}
  - te = t + entry->length;
  + te = t + entry->length; /* XXX entry->length +padding */
for (i = 0; i < (unsigned) count; i++) {
argv[i] = t;
t = strchr(t, 0);
t++;
}
  - if (t != te)/* XXX ensure full copy */
  + if (t > te) {
  +fprintf(stderr, "*** %s: STRING_ARRAY overrun\n", __FUNCTION__, rc, t, te);
  + rc = 0;
  + } else
  + if ((te-t) >= 8) {  /* XXX entry->length +padding */
  +fprintf(stderr, "*** %s: STRING_ARRAY underrun\n", __FUNCTION__, rc, t, te);
rc = 0;
  + }
   }break;
   
   default:
he->p.ptr = entry->data;
break;
   }
  -he->t = entry->info.type;
  +he->t = type;
   he->c = count;
   return rc;
   }
  @@ -1613,7 +1622,6 @@
}
/*@fallthrough@*/
   #endif
  -case RPM_STRING_TYPE:
   default:
rc = copyEntry(entry, he, minMem);
break;
  @@ -1636,9 +1644,7 @@
   int rc = 0;  /* assume success */
   
   switch (he->t) {
  -#if defined(SUPPORT_I18NSTRING_TYPE) /* XXX used while reloading? */
  -case RPM_I18NSTRING_TYPE:
  -#endif
  +case RPM_I18NSTRING_TYPE:/* XXX used while reloading? */
   case RPM_STRING_ARRAY_TYPE:
   {const char ** av = he->p.argv;
rpmTagCount cnt = he->c;
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ hdrNVR.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 23:57:37
  Branch: rpm-5_4  Handle: 2016041121573700

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   hdrNVR.c

  Log:
- headerMergeLegacySigs: back out too strict assertions, rely on
filtering.

  Summary:
RevisionChanges Path
1.46.6.8+0  -7  rpm/rpmdb/hdrNVR.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/hdrNVR.c
  
  $ cvs diff -u -r1.46.6.7 -r1.46.6.8 hdrNVR.c
  --- rpm/rpmdb/hdrNVR.c10 Apr 2016 22:03:54 -  1.46.6.7
  +++ rpm/rpmdb/hdrNVR.c11 Apr 2016 21:57:37 -  1.46.6.8
  @@ -261,15 +261,12 @@
break;
}
if (!headerIsEntry(h, he->tag)) {
  -#ifdef   DYING
if (hdrchkType(he->t))
continue;
if (hdrchkData(he->c))
continue;
  -#endif
switch(he->t) {
default:
  -assert(0);
rpmlog(RPMLOG_ERR,
_("%s: skipping tag: tag(%u) t(%u) data %p[%u]\n"),
__FUNCTION__, xx, he->tag, he->t, he->p.ptr, he->c);
  @@ -279,23 +276,19 @@
case RPM_UINT16_TYPE:
case RPM_UINT32_TYPE:
case RPM_UINT64_TYPE:
  -assert(he->c == 1);
if (he->c != 1)
continue;
break;
case RPM_STRING_TYPE:
  -assert(he->c == 1);
if (he->c != 1)
continue;
break;
case RPM_BIN_TYPE:
  -assert(he->c < 16*1024);
if (he->c >= 16*1024)
continue;
break;
case RPM_I18NSTRING_TYPE:
case RPM_STRING_ARRAY_TYPE:
  -assert(0);
continue;
break;
}
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/ CHANGES rpm/rpmio/ rpmlog.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 20:44:18
  Branch: rpm-5_4  Handle: 2016041118441800

  Modified files:   (Branch: rpm-5_4)
rpm CHANGES
rpm/rpmio   rpmlog.c

  Log:
- rpmlog: colorized spewage.

  Summary:
RevisionChanges Path
1.3501.2.479+1  -0  rpm/CHANGES
2.46.4.7+96 -19 rpm/rpmio/rpmlog.c
  

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  
  $ cvs diff -u -r1.3501.2.478 -r1.3501.2.479 CHANGES
  --- rpm/CHANGES   10 Apr 2016 22:03:53 -  1.3501.2.478
  +++ rpm/CHANGES   11 Apr 2016 18:44:18 -  1.3501.2.479
  @@ -1,4 +1,5 @@
   5.4.15 -> 5.4.16:
  +- jbj: rpmlog: colorized spewage.
   - jbj: header: stricter checks to survive "rpm -qp --nomanifest" fuzzing.
   - jbj: mongo: fix: add #include .
   - jbj: system.h: undef SUPPORT_I18NSTRING_TYPE, no RPM_I18NSTRING_TYPE.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmlog.c
  
  $ cvs diff -u -r2.46.4.6 -r2.46.4.7 rpmlog.c
  --- rpm/rpmio/rpmlog.c27 Sep 2014 15:51:24 -  2.46.4.6
  +++ rpm/rpmio/rpmlog.c11 Apr 2016 18:44:18 -  2.46.4.7
  @@ -132,11 +132,69 @@
   /*@unchecked@*/ /*@null@*/
   static FILE * _stdlog = NULL;
   
  +/*@-readonlytrans@*/ /* FIX: double indirection. */
  +/*@observer@*/ /*@unchecked@*/
  +static const char *rpmlogMsgPrefix[] = {
  +N_("fatal error: "),/*!< RPMLOG_EMERG */
  +N_("fatal error: "),/*!< RPMLOG_ALERT */
  +N_("fatal error: "),/*!< RPMLOG_CRIT */
  +N_("error: "),   /*!< RPMLOG_ERR */
  +N_("warning: "), /*!< RPMLOG_WARNING */
  +"",  /*!< RPMLOG_NOTICE */
  +"",  /*!< RPMLOG_INFO */
  +"D: ",   /*!< RPMLOG_DEBUG */
  +};
  +
  +#define ANSI_COLOR_BLACK "\x1b[30m"
  +#define ANSI_COLOR_RED   "\x1b[31m"
  +#define ANSI_COLOR_GREEN "\x1b[32m"
  +#define ANSI_COLOR_YELLOW"\x1b[33m"
  +#define ANSI_COLOR_BLUE  "\x1b[34m"
  +#define ANSI_COLOR_MAGENTA   "\x1b[35m"
  +#define ANSI_COLOR_CYAN  "\x1b[36m"
  +#define ANSI_COLOR_WHITE "\x1b[37m"
  +
  +#define ANSI_BRIGHT_BLACK"\x1b[30;1m"
  +#define ANSI_BRIGHT_RED  "\x1b[31;1m"
  +#define ANSI_BRIGHT_GREEN"\x1b[32;1m"
  +#define ANSI_BRIGHT_YELLOW   "\x1b[33;1m"
  +#define ANSI_BRIGHT_BLUE "\x1b[34;1m"
  +#define ANSI_BRIGHT_MAGENTA  "\x1b[35;1m"
  +#define ANSI_BRIGHT_CYAN "\x1b[36;1m"
  +#define ANSI_BRIGHT_WHITE"\x1b[37;1m"
  +
  +#define ANSI_COLOR_RESET   "\x1b[0m"
  +
  +static const char *rpmlogMsgPrefixColor[] = {
  +ANSI_BRIGHT_RED, /*!< RPMLOG_EMERG */
  +ANSI_BRIGHT_RED, /*!< RPMLOG_ALERT */
  +ANSI_BRIGHT_RED, /*!< RPMLOG_CRIT */
  +ANSI_BRIGHT_RED, /*!< RPMLOG_ERR */
  +ANSI_BRIGHT_MAGENTA,/*!< RPMLOG_WARNING */
  +"",  /*!< RPMLOG_NOTICE */
  +"",  /*!< RPMLOG_INFO */
  +ANSI_BRIGHT_BLUE,/*!< RPMLOG_DEBUG */
  +};
  +/*@=readonlytrans@*/
  +
  +const char * rpmlogLevelPrefix(rpmlogLvl pri)
  +{
  +return rpmlogMsgPrefix[pri&0x7];
  +}
  +
  +static const char * rpmlogLevelColor(rpmlogLvl pri)
  +{
  +return rpmlogMsgPrefixColor[pri&0x7];
  +}
  +
   static int rpmlogDefault(rpmlogRec rec)
/*@globals fileSystem @*/
/*@modifies fileSystem @*/
   {
   FILE *msgout = (_stdlog ? _stdlog : stderr);
  +const char * colorOn = isatty(fileno(msgout))
  + ? rpmlogLevelColor(rec->pri)
  + : NULL ;
   
   switch (rec->pri) {
   case RPMLOG_INFO:
  @@ -149,14 +207,52 @@
   case RPMLOG_ERR:
   case RPMLOG_WARNING:
   case RPMLOG_DEBUG:
  + if (colorOn && *colorOn)
  + (void) fputs(rpmlogLevelColor(rec->pri), msgout);
  + break;
   default:
break;
   }
   
   (void) fputs(rpmlogLevelPrefix(rec->pri), msgout);
   
  +switch (rec->pri) {
  +case RPMLOG_INFO:
  +case RPMLOG_NOTICE:
  + break;
  +case RPMLOG_EMERG:
  +case RPMLOG_ALERT:
  +case RPMLOG_CRIT:
  +case RPMLOG_ERR:
  +case RPMLOG_WARNING:
  + if (colorOn && *colorOn)
  + (void) fputs(ANSI_COLOR_RESET, msgout);
  +case RPMLOG_DEBUG:
  +default:
  + break;
  +}
  +
   if (rec->message)
(void) fputs(rec->message, msgout);
  +
  +switch (rec->pri) {
  +case RPMLOG_INFO:
  +case RPMLOG_NOTICE:
  + break;
  +

[CVS] RPM: rpm-5_4: rpm/tests/ rpm.suppress

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 11:21:19
  Branch: rpm-5_4  Handle: 2016041109211900

  Modified files:   (Branch: rpm-5_4)
rpm/tests   rpm.suppress

  Log:
- mask a glibc leak.

  Summary:
RevisionChanges Path
1.1.2.5 +1  -0  rpm/tests/rpm.suppress
  

  patch -p0 <<'@@ .'
  Index: rpm/tests/rpm.suppress
  
  $ cvs diff -u -r1.1.2.4 -r1.1.2.5 rpm.suppress
  --- rpm/tests/rpm.suppress24 Feb 2015 20:26:04 -  1.1.2.4
  +++ rpm/tests/rpm.suppress11 Apr 2016 09:21:19 -  1.1.2.5
  @@ -1,5 +1,6 @@
   # --- glibc
   leak:__GI___strdup
  +leak:__GI___strndup
   
   # --- popt
   leak:expandNextArg
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ header.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 11:18:28
  Branch: rpm-5_4  Handle: 2016041109182800

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   header.c

  Log:
- header: fix: check that STRING_ARRAY has the right number of NUL's in 
blob.
- header: fix: ensure STRING_ARRAY data is NUL terminated.

  Summary:
RevisionChanges Path
1.198.2.22  +5  -0  rpm/rpmdb/header.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  
  $ cvs diff -u -r1.198.2.21 -r1.198.2.22 header.c
  --- rpm/rpmdb/header.c10 Apr 2016 22:03:54 -  1.198.2.21
  +++ rpm/rpmdb/header.c11 Apr 2016 09:18:28 -  1.198.2.22
  @@ -1414,6 +1414,7 @@
   {const char ** argv;
size_t nb = count * sizeof(*argv);
char * t;
  + char * te;
unsigned i;
   
if (minMem) {
  @@ -1423,12 +1424,16 @@
he->p.argv = argv = (const char **) DRD_xmalloc(nb + entry->length);
t = (char *) &argv[count];
memcpy(t, entry->data, entry->length);
  + t[entry->length-1] = '\0';  /* XXX ensure NUL terminated */
}
  + te = t + entry->length;
for (i = 0; i < (unsigned) count; i++) {
argv[i] = t;
t = strchr(t, 0);
t++;
}
  + if (t != te)/* XXX ensure full copy */
  + rc = 0;
   }break;
   
   default:
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/lib/ rpmgi.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 11:15:40
  Branch: rpm-5_4  Handle: 2016041109154000

  Modified files:   (Branch: rpm-5_4)
rpm/lib rpmgi.c

  Log:
- rpmgi: fix: resurrect immediate RPMRC_FAIL and exit code with
--nomanifest.

  Summary:
RevisionChanges Path
2.75.2.13   +7  -1  rpm/lib/rpmgi.c
  

  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmgi.c
  
  $ cvs diff -u -r2.75.2.12 -r2.75.2.13 rpmgi.c
  --- rpm/lib/rpmgi.c   10 Apr 2016 22:32:27 -  2.75.2.12
  +++ rpm/lib/rpmgi.c   11 Apr 2016 09:15:40 -  2.75.2.13
  @@ -243,8 +243,14 @@
} else
rpmrc = RPMRC_OK;
   
  - if (rpmrc == RPMRC_OK || gi->flags & RPMGI_NOMANIFEST)
  + if (rpmrc == RPMRC_OK)
  + break;
  + if (gi->flags & RPMGI_NOMANIFEST) {
  + /* XXX remap skipped -> failed reads */
  + if (rpmrc == RPMRC_NOTFOUND)
  + gi->rc = rpmrc = RPMRC_FAIL;
break;
  + }
if (rpmrc == RPMRC_NOSIG) {
/* XXX move error message to caller. */
rpmlog(RPMLOG_NOTICE, _("not signed: %s\n"), fn);
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ pkgio.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 11:13:28
  Branch: rpm-5_4  Handle: 2016041109132800

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   pkgio.c

  Log:
- header: fix: ensure il/dl are greater than zero.

  Summary:
RevisionChanges Path
1.121.2.21  +13 -5  rpm/rpmdb/pkgio.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  
  $ cvs diff -u -r1.121.2.20 -r1.121.2.21 pkgio.c
  --- rpm/rpmdb/pkgio.c 11 Apr 2016 07:00:16 -  1.121.2.20
  +++ rpm/rpmdb/pkgio.c 11 Apr 2016 09:13:28 -  1.121.2.21
  @@ -1072,7 +1072,6 @@
   const void * sig = NULL;
   rpmVSFlags vsflags = pgpDigVSFlags;
   size_t siglen = 0;
  -int blen;
   rpmuint32_t ril = 0;
   const unsigned char * regionEnd = NULL;
   rpmRC rc = RPMRC_FAIL;   /* assume failure */
  @@ -1104,7 +1103,11 @@
   
   /* Is there an immutable header region tag? */
   if (entry->info.tag != RPMTAG_HEADERIMMUTABLE) {
  - rc = RPMRC_NOTFOUND;
  + if (entry->info.tag < RPMTAG_HEADERI18NTABLE) {
  + (void) snprintf(buf, sizeof(buf),
  + _("region tag: BAD, %s"), entryInfoStr(&entry->info));
  + } else
  + rc = RPMRC_NOTFOUND;
goto exit;
   }
   
  @@ -1163,6 +1166,7 @@
switch (entry->info.tag) {
case RPMTAG_SHA1HEADER:
{   const unsigned char * b;
  + int blen;
if (vsflags & RPMVSF_NOSHA1HEADER)
break;
if (entry->info.type != RPM_STRING_TYPE || entry->info.count != 1)
  @@ -1478,12 +1482,15 @@
   (void) headerGetMagic(NULL, &b, &nb);
   if (memcmp(block, b, nb)) {
unsigned char * x = (unsigned char *) block;
  - (void) snprintf(buf, sizeof(buf), _("hdr magic: BAD, read 
%02x%02x%02x%02x%02x%02x%02x%02x"), x[0], x[1], x[2], x[3], x[4], x[5], x[6], 
x[7]);
  + (void) snprintf(buf, sizeof(buf),
  + _("hdr magic: BAD, read %02x%02x%02x%02x%02x%02x%02x%02x"),
  + x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]);
goto exit;
   }
   
   il = (rpmuint32_t)ntohl(block[2]);
  -if ((il * sizeof(struct entryInfo_s)) > (st->st_size - startoff - 
sizeof(block))
  +if (il < 1
  + || (il * sizeof(struct entryInfo_s)) > (st->st_size - startoff - 
sizeof(block))
|| hdrchkTags(il))
   {
(void) snprintf(buf, sizeof(buf),
  @@ -1493,7 +1500,8 @@
goto exit;
   }
   dl = (rpmuint32_t)ntohl(block[3]);
  -if (dl > (st->st_size - startoff - sizeof(block))
  +if (dl < 1
  + || dl > (st->st_size - startoff - sizeof(block))
|| hdrchkData(dl))
   {
(void) snprintf(buf, sizeof(buf),
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ header_internal.c package.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 11:12:34
  Branch: rpm-5_4  Handle: 2016041109123300

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   header_internal.c package.c

  Log:
- fix: avoid argv underruns;

  Summary:
RevisionChanges Path
1.20.2.4+1  -5  rpm/rpmdb/header_internal.c
1.2.2.13+1  -1  rpm/rpmdb/package.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.c
  
  $ cvs diff -u -r1.20.2.3 -r1.20.2.4 header_internal.c
  --- rpm/rpmdb/header_internal.c   10 Apr 2016 22:03:54 -  1.20.2.3
  +++ rpm/rpmdb/header_internal.c   11 Apr 2016 09:12:33 -  1.20.2.4
  @@ -1,4 +1,3 @@
  -/*@-sizeoftype@*/
   /** \ingroup header
* \file rpmdb/header_internal.c
*/
  @@ -13,7 +12,6 @@
   /**
* Alignment needs (and sizeof scalars types) for internal rpm data types.
*/
  -/*@observer@*/ /*@unchecked@*/
   int rpm_typeAlign[16] =  {
   1,   /*!< RPM_NULL_TYPE */
   1,   /*!< RPM_CHAR_TYPE */
  @@ -35,9 +33,7 @@
   
   int headerVerifyInfo(rpmuint32_t il, rpmuint32_t dl, const void * pev, void 
* iv, int negate)
   {
  -/*@-castexpose@*/
   entryInfo pe = (entryInfo) pev;
  -/*@=castexpose@*/
   entryInfo info = (entryInfo) iv;
   rpmuint32_t i;
   rpmTag ptag = 0;
  @@ -68,6 +64,7 @@
info->offset = -info->offset;
   
if (i > 0 && ptag > info->tag) {
  + /* Heuristic to determine whether this or previous tag was fubar. */
if (ptag > RPMTAG_FIRSTFREE_TAG) {
i--;
info->tag = (rpmTag) ntohl(pe[i].tag);
  @@ -108,4 +105,3 @@
   }
   return -1;
   }
  -/*@=sizeoftype@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/package.c
  
  $ cvs diff -u -r1.2.2.12 -r1.2.2.13 package.c
  --- rpm/rpmdb/package.c   10 Apr 2016 22:03:54 -  1.2.2.12
  +++ rpm/rpmdb/package.c   11 Apr 2016 09:12:33 -  1.2.2.13
  @@ -243,7 +243,7 @@
   default:
break;
   case RPM_STRING_ARRAY_TYPE:
  - ix = he->c - 1; /* XXX FIXME: assumes last pubkey */
  + ix = (he->c > 1 ? he->c - 1 : 0); /* XXX FIXME: assumes last pubkey */
dig->pub = _free(dig->pub);
dig->publen = 0;
{   rpmiob iob = rpmiobNew(0);
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


[CVS] RPM: rpm-5_4: rpm/rpmdb/ pkgio.c

2016-04-11 Thread Jeff Johnson
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  

  Server: rpm5.org Name:   Jeff Johnson
  Root:   /v/rpm/cvs   Email:  j...@rpm5.org
  Module: rpm  Date:   11-Apr-2016 09:00:16
  Branch: rpm-5_4  Handle: 2016041107001600

  Modified files:   (Branch: rpm-5_4)
rpm/rpmdb   pkgio.c

  Log:
- pkgio: remove splint annotations, consolidate xar handling code.

  Summary:
RevisionChanges Path
1.121.2.20  +63 -141rpm/rpmdb/pkgio.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/pkgio.c
  
  $ cvs diff -u -r1.121.2.19 -r1.121.2.20 pkgio.c
  --- rpm/rpmdb/pkgio.c 10 Apr 2016 22:03:54 -  1.121.2.19
  +++ rpm/rpmdb/pkgio.c 11 Apr 2016 07:00:16 -  1.121.2.20
  @@ -35,33 +35,18 @@
   #include "signature.h"
   #include "debug.h"
   
  -/*@access rpmts @*/
  -/*@access rpmxar @*/
  -/*@access pgpDig @*/
  -/*@access pgpDigParams @*/
  -/*@access Header @*//* XXX compared with NULL */
  -/*@access entryInfo @*/
  -/*@access indexEntry @*/
  -/*@access FD_t @*/   /* XXX stealing digests */
  -/*@access FDSTAT_t @*/   /* XXX stealing digests */
  -
   #ifdef __cplusplus
   GENfree(struct rpmlead *)
   GENfree(rpmuint8_t **)
   GENfree(rpmuint32_t *)
   #endif   /* __cplusplus */
   
  -/*@unchecked@*/
   int _pkgio_debug = 0;
   
   /**
*/
  -/*@-exportheader@*/
  -/*@unused@*/ ssize_t timedRead(FD_t fd, /*@out@*/ void * bufptr, size_t 
length)
  - /*@globals fileSystem @*/
  - /*@modifies fd, *bufptr, fileSystem @*/;
  +ssize_t timedRead(FD_t fd, /*@out@*/ void * bufptr, size_t length);
   #define  timedRead   (ufdio->read)
  -/*@=exportheader@*/
   
   /*===*/
   /** \ingroup header
  @@ -73,8 +58,6 @@
*/
   static
   rpmRC rpmWriteHeader(FD_t fd, /*@null@*/ Header h, /*@null@*/ const char ** 
msg)
  - /*@globals fileSystem, internalState @*/
  - /*@modifies fd, h, *msg, fileSystem, internalState @*/
   {
   const void * uh = NULL;
   size_t nb;
  @@ -111,9 +94,7 @@
}
   }
   
  -/*@-sizeoftype@*/
   nb = Fwrite(uh, sizeof(char), length, fd);
  -/*@=sizeoftype@*/
   if (nb != length || Ferror(fd)) {
if (msg)
*msg = (nb > 0
  @@ -136,16 +117,12 @@
   
   if (ts != NULL && (int)opx >= 0 && (int)opx < RPMTS_OP_MAX)
op = ts->ops + opx;
  -/*@-usereleased -compdef @*/
   return op;
  -/*@=usereleased =compdef @*/
   }
   
   pgpDigParams rpmtsPubkey(const rpmts ts)
   {
  -/*@-onlytrans@*/
   return pgpGetPubkey(rpmtsDig(ts));
  -/*@=onlytrans@*/
   }
   
   rpmdb rpmtsGetRdb(rpmts ts)
  @@ -154,9 +131,7 @@
   if (ts != NULL) {
rdb = ts->rdb;
   }
  -/*@-compdef -refcounttrans -usereleased @*/
   return rdb;
  -/*@=compdef =refcounttrans =usereleased @*/
   }
   
   rpmRC rpmtsFindPubkey(rpmts ts, void * _dig)
  @@ -181,9 +156,7 @@
   assert(dig != NULL);
   assert(sigp != NULL);
   assert(pubp != NULL);
  -/*@-sefparams@*/
   assert(rpmtsDig(ts) == dig);
  -/*@=sefparams@*/
   if (ts->hkp == NULL)
ts->hkp = rpmhkpNew(NULL, 0);
   hkp = rpmhkpLink(ts->hkp);
  @@ -254,9 +227,7 @@
   
/* Retrieve the pubkey that matches the signature. */
he->tag = RPMTAG_PUBKEYS;
  -/*@-nullstate@*/
mi = rpmmiInit(rpmtsGetRdb(ts), RPMTAG_PUBKEYS, sigp->signid, 
sizeof(sigp->signid));
  -/*@=nullstate@*/
while ((h = rpmmiNext(mi)) != NULL) {
if (!headerGet(h, he, 0))
continue;
  @@ -433,24 +404,16 @@
   if (_rpmhkp_debug)
   fprintf(stderr, "<-- %s(%p,%p) res %d\n", __FUNCTION__, ts, _dig, res);
   
  -/*@-nullstate@*/
   return res;
  -/*@=nullstate@*/
   }
   
   pgpDig rpmtsDig(rpmts ts)
   {
  -/*@-mods@*/ /* FIX: hide lazy malloc for now */
   if (ts->dig == NULL) {
ts->dig = pgpDigNew(RPMVSF_DEFAULT, (pgpPubkeyAlgo)0);
  -/*@-refcounttrans@*/
(void) pgpSetFindPubkey(ts->dig, (int (*)(void *, void 
*))rpmtsFindPubkey, ts);
  -/*@=refcounttrans@*/
   }
  -/*@=mods@*/
  -/*@-compdef -retexpose -usereleased@*/
   return ts->dig;
  -/*@=compdef =retexpose =usereleased@*/
   }
   
   void rpmtsCleanDig(rpmts ts)
  @@ -461,10 +424,8 @@
(void) rpmswAdd(rpmtsOp(ts, opx), (rpmop)pgpStatsAccumulator(ts->dig, 
opx));
opx = RPMTS_OP_SIGNATURE;
(void) rpmswAdd(rpmtsOp(ts, opx), (rpmop)pgpStatsAccumulator(ts->dig, 
opx));
  -/*@-onlytrans@*/
(void) pgpDigFree(ts->dig);
ts->dig = NULL; /* XXX make sure the ptr is __REALLY__ gone */
  -/*@=onlytrans@*/
   }
   }
   
  @@ -485,16 +446,12 @@
   char nam