libtasn1/backport-CVE-2024-12133-part1.patch
Funda Wang 7695a8faa5 fix CVE-2024-12133
(cherry picked from commit 39be757d5a23e9b43c6da69675a49e214b51e511)
2025-02-08 10:40:48 +08:00

40 lines
1.1 KiB
Diff

From 4082ca2220b5ba910b546afddf7780fc4a51f75a Mon Sep 17 00:00:00 2001
From: Daiki Ueno <ueno@gnu.org>
Date: Sat, 19 Oct 2024 02:47:04 +0900
Subject: [PATCH] asn1_der_decoding2: optimize _asn1_find_up call with node
cache
If we are parsing a sequence or set and the current node is a direct
child of it, there is no need to traverse the list back to the
leftmost one as we have a node cache.
Signed-off-by: Daiki Ueno <ueno@gnu.org>
Signed-off-by: Simon Josefsson <simon@josefsson.org>
---
lib/decoding.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/lib/decoding.c b/lib/decoding.c
index d2f6dea..1e0fcb3 100644
--- a/lib/decoding.c
+++ b/lib/decoding.c
@@ -1570,7 +1570,14 @@ asn1_der_decoding2 (asn1_node *element, const void *ider, int *max_ider_len,
move = UP;
}
if (move == UP)
- p = _asn1_find_up (p);
+ {
+ /* If we are parsing a sequence or set and p is a direct
+ child of it, no need to traverse the list back to the leftmost node. */
+ if (tcache.tail == p)
+ p = tcache.head;
+ else
+ p = _asn1_find_up (p);
+ }
}
_asn1_delete_not_used (*element);
--
GitLab