aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@redhat.com>2023-12-06 13:27:20 +0000
committerAndrew Burgess <aburgess@redhat.com>2024-03-25 18:31:38 +0000
commitf9ee45c3a95ac37cf1c3f4ac6be34b9a53e306f4 (patch)
tree68317009468f7447fe76531049e2a3ae18b261bf /bfd
parentec483c2344f967708cfa71c84ef349b6951c1374 (diff)
downloadgdb-f9ee45c3a95ac37cf1c3f4ac6be34b9a53e306f4.zip
gdb-f9ee45c3a95ac37cf1c3f4ac6be34b9a53e306f4.tar.gz
gdb-f9ee45c3a95ac37cf1c3f4ac6be34b9a53e306f4.tar.bz2
bfd: make _bfd_section_size_insane part of the public API
If a BFD user is making use of a function like bfd_get_section_contents to read a section into a pre-allocated buffer, then that BFD user might also want to make use of _bfd_section_size_insane prior to allocating the buffer they intend to use in order to validate that the buffer size that plan to allocate is sane. This commit makes _bfd_section_size_insane public, by renaming it to bfd_section_size_insane. I've updated the existing uses within bfd/, I don't believe this function is used outside of bfd/ currently. One place that I plan to make use of this function is in gdb/gdb_bfd.c, in the function gdb_bfd_get_full_section_contents. This change isn't included in this commit, but will come later if/when this has been merged into bfd. There should be no change in behaviour after this commit. bfd/ * bfd-in2.h (bfd_section_size_insane): Add declaration. * compress.c (bfd_get_full_section_contents): Update for new name of _bfd_section_size_insane. (bfd_init_section_compress_status): Likewise. * dwarf2.c (read_section): Likewise. (_bfd_dwarf2_slurp_debug_info): Likewise. * libbfd.h (_bfd_section_size_insane): Remove declaration. * section.c (_bfd_section_size_insane): Rename to ... (bfd_section_size_insane): ... this. binutils/ * readelf.c (uncompress_section_contents): Update comment to account for new name of _bfd_section_size_insane.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/bfd-in2.h2
-rw-r--r--bfd/compress.c4
-rw-r--r--bfd/dwarf2.c4
-rw-r--r--bfd/libbfd.h2
-rw-r--r--bfd/section.c8
5 files changed, 10 insertions, 10 deletions
diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h
index fa28688..1166ddd 100644
--- a/bfd/bfd-in2.h
+++ b/bfd/bfd-in2.h
@@ -1089,6 +1089,8 @@ const char *bfd_generic_group_name (bfd *, const asection *sec);
bool bfd_generic_discard_group (bfd *abfd, asection *group);
+bool bfd_section_size_insane (bfd *abfd, asection *sec);
+
/* Extracted from syms.c. */
typedef struct bfd_symbol
{
diff --git a/bfd/compress.c b/bfd/compress.c
index 38eb182..19436a9 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -739,7 +739,7 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr)
if (p == NULL
&& compress_status != COMPRESS_SECTION_DONE
- && _bfd_section_size_insane (abfd, sec))
+ && bfd_section_size_insane (abfd, sec))
{
/* PR 24708: Avoid attempts to allocate a ridiculous amount
of memory. */
@@ -1070,7 +1070,7 @@ bfd_init_section_compress_status (bfd *abfd, sec_ptr sec)
|| sec->rawsize != 0
|| sec->contents != NULL
|| sec->compress_status != COMPRESS_SECTION_NONE
- || _bfd_section_size_insane (abfd, sec))
+ || bfd_section_size_insane (abfd, sec))
{
bfd_set_error (bfd_error_invalid_operation);
return false;
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 5eda14e..2e87d18 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -716,7 +716,7 @@ read_section (bfd *abfd,
return false;
}
- if (_bfd_section_size_insane (abfd, msec))
+ if (bfd_section_size_insane (abfd, msec))
{
/* PR 26946 */
_bfd_error_handler (_("DWARF error: section %s is too big"),
@@ -5520,7 +5520,7 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd,
msec;
msec = find_debug_info (debug_bfd, debug_sections, msec))
{
- if (_bfd_section_size_insane (debug_bfd, msec))
+ if (bfd_section_size_insane (debug_bfd, msec))
goto restore_vma;
/* Catch PR25070 testcase overflowing size calculation here. */
if (total_size + msec->size < total_size)
diff --git a/bfd/libbfd.h b/bfd/libbfd.h
index f15b5f2..7de23a5 100644
--- a/bfd/libbfd.h
+++ b/bfd/libbfd.h
@@ -3674,8 +3674,6 @@ bool _bfd_unrecognized_reloc
unsigned int r_type) ATTRIBUTE_HIDDEN;
/* Extracted from section.c. */
-bool _bfd_section_size_insane (bfd *abfd, asection *sec) ATTRIBUTE_HIDDEN;
-
/* Extracted from stabs.c. */
bool _bfd_link_section_stabs
(bfd *, struct stab_info *, asection *, asection *, void **,
diff --git a/bfd/section.c b/bfd/section.c
index 8cd30e8..4eaa460 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -1715,11 +1715,11 @@ _bfd_nowrite_set_section_contents (bfd *abfd,
}
/*
-INTERNAL_FUNCTION
- _bfd_section_size_insane
+FUNCTION
+ bfd_section_size_insane
SYNOPSIS
- bool _bfd_section_size_insane (bfd *abfd, asection *sec);
+ bool bfd_section_size_insane (bfd *abfd, asection *sec);
DESCRIPTION
Returns true if the given section has a size that indicates
@@ -1729,7 +1729,7 @@ DESCRIPTION
*/
bool
-_bfd_section_size_insane (bfd *abfd, asection *sec)
+bfd_section_size_insane (bfd *abfd, asection *sec)
{
bfd_size_type size = bfd_get_section_limit_octets (abfd, sec);
if (size == 0)