From 9d6984a59b753a939a426166f8862fe34c0ffc2b Mon Sep 17 00:00:00 2001
From: Serge Lamikhov-Center <to_serge@hotmail.com>
Date: Tue, 21 Jun 2022 08:07:06 +0300
Subject: [PATCH] An attempt to address unusual case where 'note' size is
 larger than Elf_Word

---
 .vscode/launch.json  | 2 +-
 elfio/elfio_note.hpp | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/.vscode/launch.json b/.vscode/launch.json
index 53ad78a..53bfb31 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -102,7 +102,7 @@
             "request": "launch",
             "program": "${workspaceFolder}/tests/elfio_fuzzer",
             "args": [
-                "oom-9025696a52c7f5cb94d482225a6b3727e9691f5b"
+                "oom-7ff496ad1166860893dba1121d088da4ce9fef65"
             ],
             "cwd": "${workspaceFolder}/tests",
         }
diff --git a/elfio/elfio_note.hpp b/elfio/elfio_note.hpp
index db52314..fc00526 100644
--- a/elfio/elfio_note.hpp
+++ b/elfio/elfio_note.hpp
@@ -152,9 +152,12 @@ class note_section_accessor_template
                 (Elf_Xword)3 * sizeof( Elf_Word ) +
                 ( ( namesz + align - 1 ) / align ) * (Elf_Xword)align +
                 ( ( descsz + align - 1 ) / align ) * (Elf_Xword)align;
-            if ( current + advance <= size ) {
+            if ( namesz < size && descsz < size && current + advance <= size ) {
                 note_start_positions.emplace_back( current );
             }
+            else {
+                break;
+            }
 
             current += advance;
         }
-- 
GitLab