[CVS] RPM: rpm-5_4: rpm/rpmdb/ header_internal.c
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: 04-Apr-2016 06:28:56 Branch: rpm-5_4 Handle: 2016040404285600 Modified files: (Branch: rpm-5_4) rpm/rpmdb header_internal.c Log: - header: remove the damaged tags assert failure. Summary: RevisionChanges Path 1.20.2.2+8 -2 rpm/rpmdb/header_internal.c patch -p0 <<'@@ .' Index: rpm/rpmdb/header_internal.c $ cvs diff -u -r1.20.2.1 -r1.20.2.2 header_internal.c --- rpm/rpmdb/header_internal.c 16 Apr 2012 23:43:34 - 1.20.2.1 +++ rpm/rpmdb/header_internal.c 4 Apr 2016 04:28:56 - 1.20.2.2 @@ -44,15 +44,21 @@ for (i = 0; i < il; i++) { info->tag = (rpmTag) ntohl(pe[i].tag); info->type = (rpmTagType) ntohl(pe[i].type); + info->offset = (rpmint32_t) ntohl(pe[i].offset); + info->count = (rpmuint32_t) ntohl(pe[i].count); +#if 0 +fprintf(stderr, "\ttag %d type %d offset 0x%x count %d\n", info->tag, info->type, info->offset, info->count); +#endif + /* XXX Convert RPMTAG_FILESTATE to RPM_UINT8_TYPE. */ if (info->tag == 1029 && info->type == 1) { info->type = RPM_UINT8_TYPE; } - info->offset = (rpmint32_t) ntohl(pe[i].offset); +#ifdef DYING assert(negate || info->offset >= 0); /* XXX insurance */ +#endif if (negate) info->offset = -info->offset; - info->count = (rpmuint32_t) ntohl(pe[i].count); if (hdrchkType(info->type)) return (int)i; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm-5_4: rpm/rpmdb/ header_internal.c
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_internal.c
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: 15-Apr-2016 20:26:17 Branch: rpm-5_4 Handle: 2016041518261700 Modified files: (Branch: rpm-5_4) rpm/rpmdb header_internal.c Log: - header: verify signature tag type failures as early as possible. Summary: RevisionChanges Path 1.20.2.6+16 -13 rpm/rpmdb/header_internal.c patch -p0 <<'@@ .' Index: rpm/rpmdb/header_internal.c $ cvs diff -u -r1.20.2.5 -r1.20.2.6 header_internal.c --- rpm/rpmdb/header_internal.c 11 Apr 2016 22:02:11 - 1.20.2.5 +++ rpm/rpmdb/header_internal.c 15 Apr 2016 18:26:17 - 1.20.2.6 @@ -49,21 +49,24 @@ 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; + /* XXX Ensure that sigh tags have usual types, fail early if not. */ + switch (info->tag) { + case RPMSIGTAG_SHA1: + if (info->type != RPM_STRING_TYPE) return (int)i; + break; + case RPMTAG_PUBKEYS: + if (info->type != RPM_STRING_ARRAY_TYPE) return (int)i; + break; + case RPMSIGTAG_DSA: + case RPMSIGTAG_RSA: + case RPMSIGTAG_ECDSA: + case RPMSIGTAG_PADDING: + if (info->type != RPM_BIN_TYPE) return (int)i; + break; + default: + break; } -#ifdef NOTYET /* XXX more todo here */ -#if !defined(SUPPORT_I18NSTRING_TYPE) - /* XXX Re-map RPM_I18NSTRING_TYPE -> RPM_STRING_TYPE */ - if (info->type == RPM_I18NSTRING_TYPE) - info->type = RPM_STRING_TYPE; -#endif -#endif - if (!(negate || info->offset >= 0)) return (int)i; if (negate) @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm-5_4: rpm/rpmdb/ header_internal.c
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: 19-Apr-2016 15:13:06 Branch: rpm-5_4 Handle: 2016041913130600 Modified files: (Branch: rpm-5_4) rpm/rpmdb header_internal.c Log: - avoid negated zero ambiguity in checks. Summary: RevisionChanges Path 1.20.2.7+1 -1 rpm/rpmdb/header_internal.c patch -p0 <<'@@ .' Index: rpm/rpmdb/header_internal.c $ cvs diff -u -r1.20.2.6 -r1.20.2.7 header_internal.c --- rpm/rpmdb/header_internal.c 15 Apr 2016 18:26:17 - 1.20.2.6 +++ rpm/rpmdb/header_internal.c 19 Apr 2016 13:13:06 - 1.20.2.7 @@ -67,7 +67,7 @@ break; } - if (!(negate || info->offset >= 0)) + if (!((negate && info->offset < 0) || info->offset >= 0)) return (int)i; if (negate) info->offset = -info->offset; @@ . __ RPM Package Managerhttp://rpm5.org CVS Sources Repositoryrpm-cvs@rpm5.org
[CVS] RPM: rpm-5_4: rpm/rpmdb/ header_internal.c package.c
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