From 6f54fcaa46e7ba045a323b06cdae91ab64fc9d82 Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Fri, 29 Jan 2021 18:02:14 +0900 Subject: [PATCH] Avoid overflow when header.n_namesz is 0 --- src/elf/note.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/elf/note.rs b/src/elf/note.rs index 04977121..b325d1f4 100644 --- a/src/elf/note.rs +++ b/src/elf/note.rs @@ -205,8 +205,10 @@ if_alloc! { }; debug!("{:?} - {:#x}", header, *offset); // -1 because includes \0 terminator - let name = bytes.gread_with::<&'a str>(offset, ctx::StrCtx::Length(header.n_namesz - 1))?; - *offset += 1; + let name = bytes.gread_with::<&'a str>(offset, ctx::StrCtx::Length(header.n_namesz.saturating_sub(1)))?; + if (header.n_namesz > 0) { + *offset += 1; + } align(alignment, offset); debug!("note name {} - {:#x}", name, *offset); let desc = bytes.gread_with::<&'a [u8]>(offset, header.n_descsz)?;