From 59d7e2e82420c7b51846ca3e1037a62c2eb01161 Mon Sep 17 00:00:00 2001 From: Mike Hommey Date: Fri, 29 Jan 2021 18:38:43 +0900 Subject: [PATCH] elf: avoid overflow when header.n_namesz is 0 (#256) --- 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)?;