added more support for broken md5 code

CVS patchset: 1503
CVS date: 1997/03/28 17:46:34
This commit is contained in:
ewt 1997-03-28 17:46:34 +00:00
parent d27dd974ec
commit aa64e9fdd7
3 changed files with 23 additions and 9 deletions

View File

@ -96,6 +96,7 @@ extern const int rpmTagTableSize;
#define RPMTAG_CHANGELOGTIME 1080
#define RPMTAG_CHANGELOGNAME 1081
#define RPMTAG_CHANGELOGTEXT 1082
#define RPMTAG_BROKENMD5 1083 /* internal */
#define RPMTAG_EXTERNAL_TAG 1000000
@ -386,10 +387,11 @@ rpmErrorCallBackType rpmErrorSetCallback(rpmErrorCallBackType);
/**************************************************/
#define RPMSIGTAG_SIZE 1000
/* the md5 sum was broken on big endian machines for a while */
#define RPMSIGTAG_LITTLEENDIANMD5 1001
/* the md5 sum was broken *twice* on big endian machines */
#define RPMSIGTAG_LEMD5_1 1001
#define RPMSIGTAG_PGP 1002
#define RPMSIGTAG_MD5 1003
#define RPMSIGTAG_LEMD5_2 1003
#define RPMSIGTAG_MD5 1004
/**************************************************/
/* */

View File

@ -292,7 +292,8 @@ int rpmVerifySignature(char *file, int_32 sigTag, void *sig, int count,
return 1;
}
break;
case RPMSIGTAG_LITTLEENDIANMD5:
case RPMSIGTAG_LEMD5_1:
case RPMSIGTAG_LEMD5_2:
if (verifyMD5Signature(file, sig, result, mdbinfileBroken)) {
return 1;
}

View File

@ -37,12 +37,23 @@ int rpmVerifyFile(char * prefix, Header h, int filenum, int * result,
char linkto[1024];
int size;
char ** unameList, ** gnameList;
int useBrokenMd5;
int_32 useBrokenMd5;
if (headerGetEntry(h, RPMTAG_RPMVERSION, NULL, NULL, NULL))
useBrokenMd5 = 0;
else
useBrokenMd5 = 1;
#if WORDS_BIGENDIAN
if (!headerGetEntry(h, RPMTAG_BROKENMD5, NULL, &useBrokenMd5, NULL)) {
char * rpmVersion;
if (headerGetEntry(h, RPMTAG_RPMVERSION, NULL, &rpmVersion, NULL)) {
useBrokenMd5 = ((rpmvercmp(rpmVersion, "2.3.3") >= 0) &&
(rpmvercmp(rpmVersion, "2.3.8") <= 0));
} else {
useBrokenMd5 = 1;
}
headerAddEntry(h, RPMTAG_BROKENMD5, RPM_INT32_TYPE, &useBrokenMd5, 1);
}
#else
useBrokenMd5 = 0;
#endif
headerGetEntry(h, RPMTAG_FILEMODES, &type, (void **) &modeList, &count);