Fix off-by-one error in ada_fold_name. (RHBZ 1905996, Kevin Buettner)
This commit is contained in:
parent
a8884a5be0
commit
61d59b7323
@ -131,10 +131,6 @@ Patch034: gdb-6.7-testsuite-stable-results.patch
|
|||||||
#=fedoratest
|
#=fedoratest
|
||||||
Patch035: gdb-6.5-ia64-libunwind-leak-test.patch
|
Patch035: gdb-6.5-ia64-libunwind-leak-test.patch
|
||||||
|
|
||||||
# Test hiding unexpected breakpoints on intentional step commands.
|
|
||||||
#=fedoratest
|
|
||||||
Patch036: gdb-6.5-missed-trap-on-step-test.patch
|
|
||||||
|
|
||||||
# Test GCORE for shmid 0 shared memory mappings.
|
# Test GCORE for shmid 0 shared memory mappings.
|
||||||
#=fedoratest: But it is broken anyway, sometimes the case being tested is not reproducible.
|
#=fedoratest: But it is broken anyway, sometimes the case being tested is not reproducible.
|
||||||
Patch038: gdb-6.3-mapping-zero-inode-test.patch
|
Patch038: gdb-6.3-mapping-zero-inode-test.patch
|
||||||
@ -382,3 +378,8 @@ Patch096: gdb-vla-intel-fix-print-char-array.patch
|
|||||||
# =fedoratest
|
# =fedoratest
|
||||||
Patch097: gdb-rhbz1553104-s390x-arch12-test.patch
|
Patch097: gdb-rhbz1553104-s390x-arch12-test.patch
|
||||||
|
|
||||||
|
# Fix off-by-one error in ada_fold_name.patch (RH BZ 1905996)
|
||||||
|
# Upstream patch proposal: https://sourceware.org/pipermail/gdb-patches/2020-December/173935.html
|
||||||
|
# =fedoratest
|
||||||
|
Patch098: gdb-rhbz1905996-fix-off-by-one-error-in-ada_fold_name.patch
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
%patch033 -p1
|
%patch033 -p1
|
||||||
%patch034 -p1
|
%patch034 -p1
|
||||||
%patch035 -p1
|
%patch035 -p1
|
||||||
%patch036 -p1
|
|
||||||
%patch038 -p1
|
%patch038 -p1
|
||||||
%patch039 -p1
|
%patch039 -p1
|
||||||
%patch040 -p1
|
%patch040 -p1
|
||||||
@ -92,3 +91,4 @@
|
|||||||
%patch095 -p1
|
%patch095 -p1
|
||||||
%patch096 -p1
|
%patch096 -p1
|
||||||
%patch097 -p1
|
%patch097 -p1
|
||||||
|
%patch098 -p1
|
||||||
|
@ -95,3 +95,4 @@ gdb-rhbz1398387-tab-crash-test.patch
|
|||||||
gdb-archer.patch
|
gdb-archer.patch
|
||||||
gdb-vla-intel-fix-print-char-array.patch
|
gdb-vla-intel-fix-print-char-array.patch
|
||||||
gdb-rhbz1553104-s390x-arch12-test.patch
|
gdb-rhbz1553104-s390x-arch12-test.patch
|
||||||
|
gdb-rhbz1905996-fix-off-by-one-error-in-ada_fold_name.patch
|
||||||
|
82
gdb-rhbz1905996-fix-off-by-one-error-in-ada_fold_name.patch
Normal file
82
gdb-rhbz1905996-fix-off-by-one-error-in-ada_fold_name.patch
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
From FEDORA_PATCHES Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kevin Buettner <kevinb@redhat.com>
|
||||||
|
Date: Tue, 8 Dec 2020 14:07:45 -0700
|
||||||
|
Subject: gdb-rhbz1905996-fix-off-by-one-error-in-ada_fold_name.patch
|
||||||
|
|
||||||
|
;; Fix off-by-one error in ada_fold_name.patch (RH BZ 1905996)
|
||||||
|
;; Upstream patch proposal: https://sourceware.org/pipermail/gdb-patches/2020-December/173935.html
|
||||||
|
;; =fedoratest
|
||||||
|
|
||||||
|
Fix off-by-one error in ada_fold_name
|
||||||
|
|
||||||
|
I'm seeing a libstdc++ assertion failure when running GDB's "maint selftest"
|
||||||
|
command when GDB is configured with the following CFLAGS and CXXFLAGS as
|
||||||
|
part of the configure line:
|
||||||
|
|
||||||
|
CFLAGS='-D_GLIBCXX_DEBUG -g3 -O0' CXXFLAGS='-D_GLIBCXX_DEBUG -g3 -O0'
|
||||||
|
|
||||||
|
This is what I see when running the self tests:
|
||||||
|
|
||||||
|
(gdb) maint selftest
|
||||||
|
Running selftest aarch64-analyze-prologue.
|
||||||
|
Running selftest aarch64-process-record.
|
||||||
|
Running selftest arm-record.
|
||||||
|
Running selftest arm_analyze_prologue.
|
||||||
|
Running selftest array_view.
|
||||||
|
Running selftest child_path.
|
||||||
|
Running selftest cli_utils.
|
||||||
|
Running selftest command_structure_invariants.
|
||||||
|
Running selftest copy_bitwise.
|
||||||
|
Running selftest copy_integer_to_size.
|
||||||
|
Running selftest cp_remove_params.
|
||||||
|
Running selftest cp_symbol_name_matches.
|
||||||
|
Running selftest dw2_expand_symtabs_matching.
|
||||||
|
/usr/include/c++/11/string_view:211: constexpr const value_type& std::basic_string_view<_CharT, _Traits>::operator[](std::basic_string_view<_CharT, _Traits>::size_type) const [with _CharT = char; _Traits = std::char_traits<char>; std::basic_string_view<_CharT, _Traits>::const_reference = const char&; std::basic_string_view<_CharT, _Traits>::size_type = long unsigned int]: Assertion '__pos < this->_M_len' failed.
|
||||||
|
Aborted (core dumped)
|
||||||
|
|
||||||
|
Here's a partial stack trace:
|
||||||
|
|
||||||
|
#0 0x00007ffff6ef6262 in raise () from /lib64/libc.so.6
|
||||||
|
#1 0x00007ffff6edf8a4 in abort () from /lib64/libc.so.6
|
||||||
|
#2 0x00000000004249bf in std::__replacement_assert (
|
||||||
|
__file=0xef7480 "/usr/include/c++/11/string_view", __line=211,
|
||||||
|
__function=0xef7328 "constexpr const value_type& std::basic_string_view<_CharT, _Traits>::operator[](std::basic_string_view<_CharT, _Traits>::size_type) const [with _CharT = char; _Traits = std::char_traits<char>; std::ba"...,
|
||||||
|
__condition=0xef7311 "__pos < this->_M_len")
|
||||||
|
at /usr/include/c++/11/x86_64-redhat-linux/bits/c++config.h:2624
|
||||||
|
#3 0x0000000000451737 in std::basic_string_view<char, std::char_traits<char> >::operator[] (this=0x7fffffffc200, __pos=8)
|
||||||
|
at /usr/include/c++/11/string_view:211
|
||||||
|
#4 0x00000000004329f5 in ada_fold_name (name="function")
|
||||||
|
at /ironwood1/sourceware-git/rawhide-master/bld/../../worktree-master/gdb/ada-lang.c:988
|
||||||
|
|
||||||
|
And, looking at frame #4...
|
||||||
|
|
||||||
|
(top-gdb) up 4
|
||||||
|
at /ironwood1/sourceware-git/rawhide-master/bld/../../worktree-master/gdb/ada-lang.c:988
|
||||||
|
988 fold_buffer[i] = tolower (name[i]);
|
||||||
|
(top-gdb) p i
|
||||||
|
$1 = 8
|
||||||
|
(top-gdb) p name.size()
|
||||||
|
$2 = 8
|
||||||
|
|
||||||
|
My patch adjusts the comparison to only copy name.size() characters
|
||||||
|
from the string. I've added a separate statement for NUL character
|
||||||
|
termination of fold_buffer[].
|
||||||
|
|
||||||
|
gdb/ChangeLog:
|
||||||
|
|
||||||
|
* ada-lang.c (ada_fold_name): Fix off-by-one error.
|
||||||
|
|
||||||
|
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
|
||||||
|
--- a/gdb/ada-lang.c
|
||||||
|
+++ b/gdb/ada-lang.c
|
||||||
|
@@ -1006,8 +1006,9 @@ ada_fold_name (gdb::string_view name)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
- for (i = 0; i <= len; i += 1)
|
||||||
|
+ for (i = 0; i < len; i += 1)
|
||||||
|
fold_buffer[i] = tolower (name[i]);
|
||||||
|
+ fold_buffer[i] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
return fold_buffer;
|
5
gdb.spec
5
gdb.spec
@ -1184,9 +1184,8 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Dec 07 2020 Kevin Buettner <kevinb@redhat.com> - 10.1-2
|
* Wed Dec 09 2020 Kevin Buettner <kevinb@redhat.com> - 10.1-2
|
||||||
- Bump release number to avoid lower NVR (for rawhide) than that of F33.
|
- Fix off-by-one error in ada_fold_name. (RHBZ 1905996, Kevin Buettner)
|
||||||
(RHBZ 1894912)
|
|
||||||
|
|
||||||
* Wed Nov 04 2020 Kevin Buettner <kevinb@redhat.com> - 10.1-1
|
* Wed Nov 04 2020 Kevin Buettner <kevinb@redhat.com> - 10.1-1
|
||||||
- Rebase to FSF GDB 10.1.
|
- Rebase to FSF GDB 10.1.
|
||||||
|
Loading…
Reference in New Issue
Block a user