Skip to content

Commit

Permalink
Always use long filesizes on v6
Browse files Browse the repository at this point in the history
A noteworthy thing here is that the payload digest changes too: this
implicitly causes the "new" payload format to be used as well, and
that's why the payload differs.
  • Loading branch information
pmatilai committed Nov 17, 2023
1 parent 4a3d19e commit 80a238d
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 36 deletions.
7 changes: 4 additions & 3 deletions build/files.c
Original file line number Diff line number Diff line change
Expand Up @@ -1181,8 +1181,8 @@ static void genCpioListAndHeader(FileList fl, Package pkg, int isSrc)
headerPutString(h, RPMTAG_FILEGROUPNAME,
rpmstrPoolStr(fl->pool, flp->gname));

/* Only use 64bit filesizes tag if required. */
if (fl->largeFiles) {
/* Use 64bit filesizes always on v6, on older only if required. */
if (pkg->rpmver >= 6 || fl->largeFiles) {
rpm_loff_t rsize64 = (rpm_loff_t)flp->fl_size;
headerPutUint64(h, RPMTAG_LONGFILESIZES, &rsize64, 1);
(void) rpmlibNeedsFeature(pkg, "LargeFiles", "4.12.0-1");
Expand Down Expand Up @@ -1285,7 +1285,8 @@ static void genCpioListAndHeader(FileList fl, Package pkg, int isSrc)
}
pkg->dpaths[npaths] = NULL;

if (totalFileSize < UINT32_MAX) {
/* Use 64bit sizes always on v6, on older only if required. */
if (pkg->rpmver < 6 && totalFileSize < UINT32_MAX) {

This comment has been minimized.

Copy link
@dralley

dralley Jan 11, 2024

Contributor

Technically totalFileSize <= UINT32_MAX ought to be OK?

rpm_off_t totalsize = totalFileSize;
headerPutUint32(h, RPMTAG_SIZE, &totalsize, 1);
} else {
Expand Down
69 changes: 36 additions & 33 deletions tests/rpmsigdig.at
Original file line number Diff line number Diff line change
Expand Up @@ -759,11 +759,11 @@ done
runroot rpmkeys -Kv /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
],
[0],
[SHA256HEADER: 8ab715bef152a18bef62df29805b9d1b8f2c5d92955a1a7fa2491967cc17c035
[SHA256HEADER: 73e823d221e9e2321580ff06c7543f176f90b4c13aeaf9b637644c5bad5db357
SHA1HEADER: (none)
SIGMD5: (none)
PAYLOADDIGEST: 116ce41ebb72f1877cda3d7dedaf5b78770e202d6389ade4e415d78548d703a8
PAYLOADDIGESTALT: 116ce41ebb72f1877cda3d7dedaf5b78770e202d6389ade4e415d78548d703a8
PAYLOADDIGEST: 2f916d301d47ee34f16b74c7c49d11448fceb5487c6ba53c04950423fffeab95
PAYLOADDIGESTALT: 2f916d301d47ee34f16b74c7c49d11448fceb5487c6ba53c04950423fffeab95
/build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm:
Header SHA256 digest: OK
Payload SHA256 ALT digest: OK
Expand All @@ -780,10 +780,10 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<string>C</string>
</rpmTag>
<rpmTag name="Sigsize">
<integer>6121</integer>
<integer>4157</integer>
</rpmTag>
<rpmTag name="Sha256header">
<string>8ab715bef152a18bef62df29805b9d1b8f2c5d92955a1a7fa2491967cc17c035</string>
<string>73e823d221e9e2321580ff06c7543f176f90b4c13aeaf9b637644c5bad5db357</string>
</rpmTag>
<rpmTag name="Name">
<string>attrtest</string>
Expand All @@ -806,9 +806,6 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<rpmTag name="Buildhost">
<string>testhost</string>
</rpmTag>
<rpmTag name="Size">
<integer>150</integer>
</rpmTag>
<rpmTag name="License">
<string>GPL</string>
</rpmTag>
Expand All @@ -821,28 +818,6 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<rpmTag name="Arch">
<string>noarch</string>
</rpmTag>
<rpmTag name="Filesizes">
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
</rpmTag>
<rpmTag name="Filemodes">
<integer>16832</integer>
<integer>33024</integer>
Expand Down Expand Up @@ -1045,7 +1020,7 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<integer>4294967295</integer>
</rpmTag>
<rpmTag name="Archivesize">
<integer>2684</integer>
<integer>604</integer>
</rpmTag>
<rpmTag name="Providename">
<string>attrtest</string>
Expand All @@ -1060,6 +1035,7 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<integer>16777226</integer>
<integer>16777226</integer>
<integer>16777226</integer>
<integer>16777226</integer>
<integer>4608</integer>
<integer>4608</integer>
<integer>4608</integer>
Expand All @@ -1076,6 +1052,7 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<string>group(zoot)</string>
<string>rpmlib(CompressedFileNames)</string>
<string>rpmlib(FileDigests)</string>
<string>rpmlib(LargeFiles)</string>
<string>rpmlib(PayloadFilesHavePrefix)</string>
<string>user(adm)</string>
<string>user(bar)</string>
Expand All @@ -1093,6 +1070,7 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<string/>
<string>3.0.4-1</string>
<string>4.6.0-1</string>
<string>4.12.0-1</string>
<string>4.0-1</string>
<string/>
<string/>
Expand Down Expand Up @@ -1301,20 +1279,45 @@ runroot rpm -qp --xml /build/RPMS/6/noarch/attrtest-1.0-1.noarch.rpm
<string>directory</string>
<string>ASCII text</string>
</rpmTag>
<rpmTag name="Longfilesizes">
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
<integer>0</integer>
<integer>15</integer>
</rpmTag>
<rpmTag name="Longsize">
<integer>150</integer>
</rpmTag>
<rpmTag name="Filedigestalgo">
<integer>8</integer>
</rpmTag>
<rpmTag name="Encoding">
<string>utf-8</string>
</rpmTag>
<rpmTag name="Payloaddigest">
<string>116ce41ebb72f1877cda3d7dedaf5b78770e202d6389ade4e415d78548d703a8</string>
<string>2f916d301d47ee34f16b74c7c49d11448fceb5487c6ba53c04950423fffeab95</string>
</rpmTag>
<rpmTag name="Payloaddigestalgo">
<integer>8</integer>
</rpmTag>
<rpmTag name="Payloaddigestalt">
<string>116ce41ebb72f1877cda3d7dedaf5b78770e202d6389ade4e415d78548d703a8</string>
<string>2f916d301d47ee34f16b74c7c49d11448fceb5487c6ba53c04950423fffeab95</string>
</rpmTag>
</rpmHeader>
],
Expand Down

0 comments on commit 80a238d

Please sign in to comment.