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:
    Revision    Changes     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 -0000      1.34.2.14
  +++ rpm/rpmdb/tagname.c       11 Apr 2016 22:04:46 -0000      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 & 0x40000000) {
        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 & 0xffff);
  -     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 Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to