aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2024-01-25 23:10:11 -0500
committerSam James <sam@gentoo.org>2024-08-09 11:06:17 +0100
commite99a8c374ed7da962bcd4ba76107dc090502e8d6 (patch)
treebd3971dc8b0fd73de79dd8a1d0194a6623d17707 /dumpelf.c
parentdumpelf: improve note memory check (diff)
downloadpax-utils-e99a8c374ed7da962bcd4ba76107dc090502e8d6.tar.gz
pax-utils-e99a8c374ed7da962bcd4ba76107dc090502e8d6.tar.bz2
pax-utils-e99a8c374ed7da962bcd4ba76107dc090502e8d6.zip
dumpelf: limit note name display
The note name is supposed to be NUL terminated, but if it's not, make sure we don't keep reading data until we hit out of bounds by limiting to exactly the number of bytes declared (and that we already verified fit within valid memory). Signed-off-by: Mike Frysinger <vapier@gentoo.org> (cherry picked from commit c7d34ad6cf90f3cbb2a184050996d37966fe2ef1) Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dumpelf.c')
-rw-r--r--dumpelf.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/dumpelf.c b/dumpelf.c
index b88be0c..15058ee 100644
--- a/dumpelf.c
+++ b/dumpelf.c
@@ -253,7 +253,7 @@ static void dump_notes(const elfobj *elf, size_t B, const void *memory, const vo
printf("\t * Elf%zu_Nhdr note%zu = {\n", B, i);
printf("\t * \t.n_namesz = %u, (bytes)", namesz);
if (name)
- printf(" [%s]", name);
+ printf(" [%.*s]", namesz, name);
printf("\n");
printf("\t * \t.n_descsz = %u, (bytes)", descsz);
if (desc) {