Backport "Add a recursion limit to the demangle_const function in the Rust demangler."
And related patches. Also fix bogus date on changelog Resolves: RHEL-7330
This commit is contained in:
parent
14a314a859
commit
9e868de349
@ -293,3 +293,11 @@ Patch068: gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.pat
|
|||||||
# (Nick Clifton, RHBZ 2153228)
|
# (Nick Clifton, RHBZ 2153228)
|
||||||
Patch069: gdb-rhbz2153228-fail-if-sh_info-is-zero.patch
|
Patch069: gdb-rhbz2153228-fail-if-sh_info-is-zero.patch
|
||||||
|
|
||||||
|
# Backport Add a recursion limit to the demangle_const function in the Rust demangler.
|
||||||
|
# (Nick Clifton, RHEL-4234)
|
||||||
|
Patch070: libiberty-infinite-recursion-fix-1-of-2.patch
|
||||||
|
|
||||||
|
# Backport Fix typo in recent code to add stack recursion limit to the Rust demangler.
|
||||||
|
# (Nick Clifton)
|
||||||
|
Patch071: libiberty-infinite-recursion-fix-2-of-2.patch
|
||||||
|
|
||||||
|
@ -67,3 +67,5 @@
|
|||||||
%patch067 -p1
|
%patch067 -p1
|
||||||
%patch068 -p1
|
%patch068 -p1
|
||||||
%patch069 -p1
|
%patch069 -p1
|
||||||
|
%patch070 -p1
|
||||||
|
%patch071 -p1
|
||||||
|
@ -67,3 +67,5 @@ gdb-backport-python-config-replace-deprecated-distutils.patch
|
|||||||
gdb-gcc-13-backport-self-move-diagnostic-fix
|
gdb-gcc-13-backport-self-move-diagnostic-fix
|
||||||
gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch
|
gdb-backport-call-check_typedef-at-beginning-of-dwarf_expr_context.patch
|
||||||
gdb-rhbz2153228-fail-if-sh_info-is-zero.patch
|
gdb-rhbz2153228-fail-if-sh_info-is-zero.patch
|
||||||
|
libiberty-infinite-recursion-fix-1-of-2.patch
|
||||||
|
libiberty-infinite-recursion-fix-2-of-2.patch
|
||||||
|
8
gdb.spec
8
gdb.spec
@ -73,7 +73,7 @@ Version: 12.1
|
|||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 1.
|
# The release always contains a leading reserved number, start it at 1.
|
||||||
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
|
|
||||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
|
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and LGPLv3+ and BSD and Public Domain and GFDL
|
||||||
# Do not provide URL for snapshots as the file lasts there only for 2 days.
|
# Do not provide URL for snapshots as the file lasts there only for 2 days.
|
||||||
@ -1205,6 +1205,12 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Oct 10 2023 Guinevere Larsen <blarsen@redhat.com> - 12.1-4.el9
|
||||||
|
- Backport "Fix typo in recent code to add stack recursion limit to the Rust demangler."
|
||||||
|
(Nick Clifton)
|
||||||
|
- Backport "Add a recursion limit to the demangle_const function in the Rust demangler."
|
||||||
|
(Nick Clifton, RHEL-4234)
|
||||||
|
|
||||||
* Tue Jun 13 2023 Keith Seitz <keiths@redhat.com> - 12.1-3.el9
|
* Tue Jun 13 2023 Keith Seitz <keiths@redhat.com> - 12.1-3.el9
|
||||||
- Backport "Update gdb-add-index.sh ..."
|
- Backport "Update gdb-add-index.sh ..."
|
||||||
(Andrew Burgess, RHBZ 2213228)
|
(Andrew Burgess, RHBZ 2213228)
|
||||||
|
85
libiberty-infinite-recursion-fix-1-of-2.patch
Normal file
85
libiberty-infinite-recursion-fix-1-of-2.patch
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Clifton <nickc@redhat.com>
|
||||||
|
Date: Fri, 1 Jul 2022 15:58:52 +0100
|
||||||
|
Subject: libiberty-infinite-recursion-fix-1-of-2.patch
|
||||||
|
|
||||||
|
;; Backport Add a recursion limit to the demangle_const function in the Rust demangler.
|
||||||
|
;; (Nick Clifton, RHEL-4234)
|
||||||
|
|
||||||
|
libiberty/
|
||||||
|
PR demangler/105039
|
||||||
|
* rust-demangle.c (demangle_const): Add recursion limit.
|
||||||
|
|
||||||
|
diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c
|
||||||
|
--- a/libiberty/rust-demangle.c
|
||||||
|
+++ b/libiberty/rust-demangle.c
|
||||||
|
@@ -126,7 +126,7 @@ parse_integer_62 (struct rust_demangler *rdm)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
x = 0;
|
||||||
|
- while (!eat (rdm, '_'))
|
||||||
|
+ while (!eat (rdm, '_') && !rdm->errored)
|
||||||
|
{
|
||||||
|
c = next (rdm);
|
||||||
|
x *= 62;
|
||||||
|
@@ -1148,6 +1148,15 @@ demangle_const (struct rust_demangler *rdm)
|
||||||
|
if (rdm->errored)
|
||||||
|
return;
|
||||||
|
|
||||||
|
+ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
|
||||||
|
+ {
|
||||||
|
+ ++ rdm->recursion;
|
||||||
|
+ if (rdm->recursion > RUST_MAX_RECURSION_COUNT)
|
||||||
|
+ /* FIXME: There ought to be a way to report
|
||||||
|
+ that the recursion limit has been reached. */
|
||||||
|
+ goto fail_return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (eat (rdm, 'B'))
|
||||||
|
{
|
||||||
|
backref = parse_integer_62 (rdm);
|
||||||
|
@@ -1158,7 +1167,7 @@ demangle_const (struct rust_demangler *rdm)
|
||||||
|
demangle_const (rdm);
|
||||||
|
rdm->next = old_next;
|
||||||
|
}
|
||||||
|
- return;
|
||||||
|
+ goto pass_return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ty_tag = next (rdm);
|
||||||
|
@@ -1167,7 +1176,7 @@ demangle_const (struct rust_demangler *rdm)
|
||||||
|
/* Placeholder. */
|
||||||
|
case 'p':
|
||||||
|
PRINT ("_");
|
||||||
|
- return;
|
||||||
|
+ goto pass_return;
|
||||||
|
|
||||||
|
/* Unsigned integer types. */
|
||||||
|
case 'h':
|
||||||
|
@@ -1200,18 +1209,20 @@ demangle_const (struct rust_demangler *rdm)
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
- rdm->errored = 1;
|
||||||
|
- return;
|
||||||
|
+ goto fail_return;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (rdm->errored)
|
||||||
|
- return;
|
||||||
|
-
|
||||||
|
- if (rdm->verbose)
|
||||||
|
+ if (!rdm->errored && rdm->verbose)
|
||||||
|
{
|
||||||
|
PRINT (": ");
|
||||||
|
PRINT (basic_type (ty_tag));
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ fail_return:
|
||||||
|
+ rdm->errored = 1;
|
||||||
|
+ pass_return:
|
||||||
|
+ if (rdm->recursion != RUST_NO_RECURSION_LIMIT)
|
||||||
|
+ -- rdm->recursion;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
23
libiberty-infinite-recursion-fix-2-of-2.patch
Normal file
23
libiberty-infinite-recursion-fix-2-of-2.patch
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||||
|
From: Nick Clifton <nickc@redhat.com>
|
||||||
|
Date: Mon, 4 Jul 2022 16:31:18 +0100
|
||||||
|
Subject: libiberty-infinite-recursion-fix-2-of-2.patch
|
||||||
|
|
||||||
|
;; Backport Fix typo in recent code to add stack recursion limit to the Rust demangler.
|
||||||
|
;; (Nick Clifton)
|
||||||
|
|
||||||
|
libiberty
|
||||||
|
* rust-demangle.c (demangle_const): Add a missing goto pass_return
|
||||||
|
at the end of the function.
|
||||||
|
|
||||||
|
diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c
|
||||||
|
--- a/libiberty/rust-demangle.c
|
||||||
|
+++ b/libiberty/rust-demangle.c
|
||||||
|
@@ -1217,6 +1217,7 @@ demangle_const (struct rust_demangler *rdm)
|
||||||
|
PRINT (": ");
|
||||||
|
PRINT (basic_type (ty_tag));
|
||||||
|
}
|
||||||
|
+ goto pass_return;
|
||||||
|
|
||||||
|
fail_return:
|
||||||
|
rdm->errored = 1;
|
Loading…
Reference in New Issue
Block a user