Damaged headers are due to FILESTATES from older rpmdb.
rpmdb/header.c (regionSwab):
522 for (; il > 0; il--, pe++) {
523 struct indexEntry_s ie;
524 rpmTagType type;
525
526 ie.info.tag = (rpmuint32_t) ntohl(pe->tag);
527 ie.info.type = (rpmuint32_t) ntohl(pe->type);
528 ie.info.count = (rpmuint32_t) ntohl(pe->count);
529 ie.info.offset = (rpmint32_t) ntohl(pe->offset);
530 assert(ie.info.offset >= 0); /* XXX insurance */
531
Bails out right here:
532 if (hdrchkType(ie.info.type))
533 return 0;
534 if (hdrchkData(ie.info.count))
535 return 0;
536 if (hdrchkData(ie.info.offset))
537 return 0;
538 if (hdrchkAlign(ie.info.type, ie.info.offset))
539 return 0;
Older FILESTATES have type RPM_CHAR_TYPE (= 1), and new value
for RPM_MIN_TYPE is 2, which is RPM_UINT8_TYPE.
- application/pgp-signature attachment: stored
Received on Wed Aug 27 10:26:20 2008