pld rpm 5.4.17

Jakub Bogusz qboosh at pld-linux.org
Sat Mar 4 10:17:26 CET 2017


On Thu, Mar 02, 2017 at 04:05:49PM -0500, Jeffrey Johnson wrote:
> 
> > On Mar 2, 2017, at 3:52 PM, Jakub Bogusz <qboosh at pld-linux.org> wrote:
> > 
> > 
> > As far as I understand the code, rdl is size of immutable entry infos
> > part, while off is an offset in tags data part.
> > And when immutable tags data is short enough (shorter than entry infos
> > of immutable part), this check refuses to load header.
> > 
> 
> Yes. there is a ???immutable region??? header and trailer, where the
> offset field is used as a double check on the tags in the immutable region.
> 
> > IMO the checks should be like in the attached patch.
> > With it, the two refused packages are accessible again.
> > 
> 
> I???ve applied the patch and will do a few tests before checking in.
> 
> One item I note (just scanning the patch) is
> 
> -		if (rdl < REGION_TAG_COUNT || rdl > (rpmuint32_t)(off+nb))
> +		if (rdl < REGION_TAG_COUNT || rdl > (rpmuint32_t)(il * REGION_TAG_COUNT))
> 
> The variable il is derived and may be tainted, while off and nb are de facto positioning
> within the header memory blob. And yes, it may not matter.

il is already used earlier to calculate dataStart. And length of the
whole data (pvlen).

> Meanwhile the entire issue is rather obscure, and only testing will tell.
> Is there any information about what header???s are failing headerCopyLoad()?
> If those headers are public keys, then the real flaw is elsewhere, wrapping
> a public key within an immutable region, with an appended SHA1.

No, these are two packages.
I'm attaching whole db data of one of them (partially described by me
during investigation).


-- 
Jakub Bogusz    http://qboosh.pl/
-------------- next part --------------
* index 0b270000:
00000043 il
00000384 dl

0000003f 00000007 00000280 00000010	HEADER_IMMUTABLE	REGION_TAG_TYPE=RPM_BIN_TYPE
00000064 00000008 00000000 00000002	HEADER_I18NTABLE	RPM_STRING_ARRAY_TYPE
000003e8 00000006 0000000b 00000001	RPMTAG_NAME		RPM_STRING_TYPE
000003e9 00000006 00000019 00000001	RPMTAG_VERSION		RPM_STRING_TYPE
000003ea 00000006 00000020 00000001
000003eb 00000004 00000024 00000001
000003ec 00000009 00000028 00000002
000003ed 00000009 00000058 00000002
000003ee 00000004 00000090 00000001
000003ef 00000006 00000094 00000001
000003f1 00000004 000000a8 00000001
000003f2 00000006 000000ac 00000001
000003f6 00000006 000000b0 00000001
000003f7 00000006 000000b4 00000001
000003f8 00000009 000000c1 00000001
000003fc 00000006 000000d7 00000001
000003fd 00000006 000000f6 00000001
000003fe 00000006 000000fc 00000001
00000404 00000004 00000104 00000001
00000406 00000003 00000108 00000001
00000409 00000003 0000010a 00000001
0000040a 00000004 0000010c 00000001
0000040b 00000008 00000110 00000001
0000040c 00000008 00000131 00000001
0000040d 00000004 00000134 00000001
0000040f 00000008 00000138 00000001
00000410 00000008 0000013d 00000001
00000414 00000006 00000142 00000001
00000415 00000004 0000015c 00000001
00000417 00000008 00000160 00000001
00000418 00000004 00000170 00000002
00000419 00000008 00000178 00000002
0000041a 00000008 0000019b 00000002
00000428 00000006 000001ac 00000001
00000447 00000004 000001b0 00000001
00000448 00000004 000001b4 00000001
00000449 00000008 000001b8 00000001
00000458 00000004 000001bc 00000001
00000459 00000008 000001c0 00000001
0000045c 00000004 000001cc 00000001
0000045d 00000008 000001d0 00000001
0000045e 00000008 000001da 00000001
00000462 00000006 000001e8 00000001
00000464 00000006 0000022b 00000001
00000465 00000006 00000230 00000001
00000466 00000006 00000235 00000001
0000046c 00000006 00000237 00000001
00000474 00000004 00000248 00000001
00000475 00000004 0000024c 00000001
00000476 00000008 00000250 00000003
00000477 00000004 00000270 00000001
00000478 00000004 00000274 00000001
0000047b 00000008 00000278 00000001
00000499 00000004 0000027c 00000001	RPMTAG_FILEDIGESTALGOS	RPM_UINT32_TYPE
-- immutable end
00000101 00000004 00000290 00000001	RPMTAG_SIGSIZE
00000105 00000007 00000294 00000010	RPMTAG_SIGMD5
0000010d 00000006 000002a4 00000001	RPMTAG_SHA1HEADER
000003f0 00000004 000002d0 00000001	RPMTAG_INSTALLTIME
00000405 00000001 000002d4 00000001	RPMTAG_FILESTATES
00000416 00000004 000002d8 00000001	RPMTAG_ARCHIVESIZE
00000467 00000004 000002dc 00000001	RPMTAG_INSTALLCOLOR
00000468 00000004 000002e0 00000001	RPMTAG_INSTALLTID
0000048c 00000008 000002e4 00000001	RPMTAG_BLINKPKGID
0000048d 00000008 00000305 00000001	RPMTAG_BLINKHDRID
0000048e 00000008 0000032e 00000001	RPMTAG_BLINKNEVRA
00000492 00000006 0000034a 00000001	RPMTAG_PACKAGEORIGIN
000004a0 00000004 00000380 00000001	RPMTAG_PACKAGECOLOR

dataStart
d+0000	4300706c2e5554462d3800
d+000b	746f6c75612b2b2d646576656c00
d+0019	312e302e393300
d+0020	35000000
d+0024	00000000
d+0028	746f6c75612b2b206865616465722066696c657300506c696b69206e6167c582c3b3776b6f776520746f6c75612b2b00
d+0058	4865616465722066696c657320666f7220746f6c75612b2b2e00506c696b69206e6167c582c3b3776b6f776520746f6c75612b2b2e000000
d+0090	50180128
d+0094	737472616e6765722e71626f6f73682e706c0000
d+00a8	00001c20
d+00ac	504c4400
d+00b0	4d495400
d+00b4	4a616b756220426f6775737a00
d+00c1	446576656c6f706d656e742f4c696272617269657300
d+00d7	687474703a2f2f7777772e636f64656e69782e636f6d2f7e746f6c75612f00
d+00f6	6c696e757800
d+00fc	6936383600000000
d+0104	00001c20
d+0108	81a4
d+010a	0000
d+010c	50180127
d+0110	636235333237613036333131356161663335306339326438653931633261386600
d+0131	000000
d+0134	00000000
d+0138	726f6f7400
d+013d	726f6f7400
d+0142	746f6c75612b2b2d312e302e39332d352e7372632e72706d0000
d+015c	ffffffff
d+0160	746f6c75612b2b2d646576656c000000
d+0170	000000080100000a
d+0178	746f6c75612b2b2d6c6962730072706d6c6962285061796c6f616449734c7a6d612900
d+019b	312e302e39332d3500342e342e362d3100
d+01ac	342e3500
d+01b0	00000803
d+01b4	40366500
d+01b8	00000000
d+01bc	00000008
d+01c0	303a312e302e39332d350000
d+01cc	00000000
d+01d0	746f6c75612b2b2e6800
d+01da	2f7573722f696e636c7564652f00
d+01e8	2d4f32202d70697065202d666e6f2d7374726963742d616c696173696e67202d667772617076202d6d617263683d69363836202d6d74756e653d70656e7469756d3400
d+022b	6370696f00
d+0230	6c7a6d6100
d+0235	3900
d+0237	693638362d706c642d6c696e7578000000
d+0248	00000000
d+024c	00000001
d+0250	004320736f757263652c2041534349492074657874006469726563746f727900
d+0270	00000000
d+0274	00000000
d+0278	00000000
d+027c	00000001
-- immutable trailer
d+0280	0000003f 00000007 fffffca0 00000010
-- immutable end
d+0290	00000c11
d+0294	c8a786a05dc5214888b2ff2ae38a6147
d+02a4	61303336323662323336313030633035346134363334353931616161363263343436613038663430000000005018
d+02d0	01c70000
d+02d4	00000000
d+02d8	1d240000
d+02dc	00035018
d+02e0	01c33166
d+02e4	35383066316336383866306466393866353662646364363431626432333900
d+0305	3435393438653936306330623837336332666131633433633537653834346139653233346239323600
d+032e	746f6c75612b2b2d646576656c2d312e302e39332d342e6936383600
d+034a	2f686f6d652f636f6d702f72706d2f52504d532f746f6c75612b2b2d646576656c2d312e302e39332d352e693638362e72706d000000
d+0380	00000000
dataEnd=dataStart+0384


More information about the pld-devel-en mailing list