rpm/backport-Tag-data-must-have-count-greater-than-zero.patch
2022-11-03 16:53:48 +08:00

42 lines
1.2 KiB
Diff

From 5e40166380a450a36b302914be60fd004624f724 Mon Sep 17 00:00:00 2001
From: Demi Marie Obenour <demiobenour@gmail.com>
Date: Wed, 13 Jan 2021 15:54:17 -0500
Subject: [PATCH] Tag data must have count greater than zero
Zero counts are invalid, and they cause problems elsewhere. For
instance, strtaglen() will suffer an integer underflow.
---
lib/header.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/lib/header.c b/lib/header.c
index fc52c3178..41c2da94f 100644
--- a/lib/header.c
+++ b/lib/header.c
@@ -128,6 +128,13 @@ static const size_t headerMaxbytes = (256*1024*1024);
**/
#define hdrchkTag(_tag) ((_tag) < HEADER_I18NTABLE)
+/**
+ * Reasonableness check on count values.
+ * Catches nasty stuff like negative or zero counts, which would cause
+ * integer underflows in strtaglen().
+ */
+#define hdrchkCount(_count) ((_count) == 0)
+
/**
* Sanity check on type values.
*/
@@ -279,6 +286,8 @@ static rpmRC hdrblobVerifyInfo(hdrblob blob, char **emsg)
goto err;
if (hdrchkType(info.type))
goto err;
+ if (hdrchkCount(info.count))
+ goto err;
if (hdrchkAlign(info.type, info.offset))
goto err;
if (hdrchkRange(blob->dl, info.offset))
--
2.27.0