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

2016-05-05 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:   06-May-2016 00:20:16
  Branch: rpm-5_4  Handle: 2016050522201600

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

  Log:
- fix: hotwire le32toh() on __APPLE__

  Summary:
RevisionChanges Path
1.34.2.16   +5  -0  rpm/rpmdb/tagname.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tagname.c
  
  $ cvs diff -u -r1.34.2.15 -r1.34.2.16 tagname.c
  --- rpm/rpmdb/tagname.c   11 Apr 2016 22:04:46 -  1.34.2.15
  +++ rpm/rpmdb/tagname.c   5 May 2016 22:20:16 -   1.34.2.16
  @@ -3,7 +3,12 @@
*/
   
   #include "system.h"
  +
  +#if defined(__APPLE__)   /* XXX hotwire le32toh */
  +#define le32toh(x) (x)
  +#else
   #include 
  +#endif
   
   /* Don't redefine this macro if it already exists */
   #ifndef le32toh
  @@ .
__
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/ tagname.c

2016-04-03 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:   03-Apr-2016 22:50:34
  Branch: rpm-5_4  Handle: 2016040320503400

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

  Log:
- skip RPMSIGTAG_* <-> RPMTAG_* value collisions.

  Summary:
RevisionChanges Path
1.34.2.13   +8  -10 rpm/rpmdb/tagname.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tagname.c
  
  $ cvs diff -u -r1.34.2.12 -r1.34.2.13 tagname.c
  --- rpm/rpmdb/tagname.c   27 Feb 2016 21:34:57 -  1.34.2.12
  +++ rpm/rpmdb/tagname.c   3 Apr 2016 20:50:34 -   1.34.2.13
  @@ -512,26 +512,24 @@
* Validate that implicit and explicit types are identical.
* @param he tag container
*/
  -void tagTypeValidate(HE_t he);
  -void tagTypeValidate(HE_t he)
  +void tagTypeValidate(HE_t he, unsigned int flags);
  +void tagTypeValidate(HE_t he, unsigned int flags)
   {
  +/* XXX Skip RPMSIGTAG_* validation. */
  +if (flags & HEADERGET_SIGHEADER)
  + return;
  +
  +#if !defined(SUPPORT_I18NSTRING_TYPE)
   /* XXX Re-map RPM_I18NSTRING_TYPE -> RPM_STRING_TYPE */
   if (he->t == RPM_I18NSTRING_TYPE)
he->t = RPM_STRING_TYPE;
  +#endif
   
   /* XXX Arbitrary tags are always strings. */
   if ((he->tag & 0x4000)
&& (he->t == RPM_STRING_TYPE || he->t == RPM_STRING_ARRAY_TYPE))
return;
   
  -/* XXX Make 0x3fff disappear for now. Signature? */
  -if (he->tag == 0x3fff && he->t == RPM_BIN_TYPE)
  - return;
  -
  -/* XXX hack around known borkage for now. */
  -if (!(he->tag == 62))
  -if (!(he->tag == 261 || he->tag == 269))
  -if (!(he->tag == 1000 || he->tag == 1004 || he->tag == 1007))
   if (!(he->tag == 1029 || he->tag == 1086 || he->tag == 1087))
   if (he->t != (tagType(he->tag) & 0x))
   fprintf(stderr, "==> warning: tag %u type(0x%x) != implicit type(0x%x)\n", 
(unsigned) he->tag, he->t, tagType(he->tag));
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org


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

2016-02-27 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:   27-Feb-2016 22:34:57
  Branch: rpm-5_4  Handle: 2016022721345700

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

  Log:
fix a endian incompatible error in generating rpm tag

A flaw was found in the way rpm generating arbitrary tags, which leads to a
incorrect query result, this issue is introduced by a incompatible endianess
when the generating process is executed on different architectures.

This patch resolves it by taking the byte order that host uses.

Upstream-Status: Pending

Signed-off-by: Ming Liu 

  Summary:
RevisionChanges Path
1.34.2.12   +16 -0  rpm/rpmdb/tagname.c
  

  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/tagname.c
  
  $ cvs diff -u -r1.34.2.11 -r1.34.2.12 tagname.c
  --- rpm/rpmdb/tagname.c   27 Sep 2014 15:52:36 -  1.34.2.11
  +++ rpm/rpmdb/tagname.c   27 Feb 2016 21:34:57 -  1.34.2.12
  @@ -3,6 +3,19 @@
*/
   
   #include "system.h"
  +#include 
  +
  +/* Don't redefine this macro if it already exists */
  +#ifndef le32toh
  +#ifdef __USE_BSD
  +#include 
  +#if __BYTE_ORDER == __LITTLE_ENDIAN
  +#define le32toh(x) (x)
  +#else
  +#define le32toh(x) __bswap_32(x)
  +#endif
  +#endif /* __USE_BSD */
  +#endif /* le32toh */
   
   #include   /* XXX DIGEST_CTX, xtolower, xstrcasecmp */
   #include 
  @@ -153,7 +166,10 @@
   xx = rpmDigestUpdate(ctx, s, nb);
   xx = rpmDigestFinal(ctx, , , 0);
   if (digest && digestlen > 4) {
  + /* The tag is stored in a uniform byte order for cross-endian 
compatibility.
  +Swap to the host uses. */
memcpy(, digest + (digestlen - 4), 4);
  + tag = le32toh(tag);
tag = (rpmTag) (tag & 0x3fff);
tag = (rpmTag) (tag | 0x4000);
   }
  @@ .
__
RPM Package Managerhttp://rpm5.org
CVS Sources Repositoryrpm-cvs@rpm5.org