[binutils-gdb] tekhex: Uninitialised read

Alan Modra amodra@sourceware.org
Tue Mar 31 06:28:02 GMT 2020


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b3b360dec78845e30e7994cd633905da5668a96c

commit b3b360dec78845e30e7994cd633905da5668a96c
Author: Alan Modra <amodra@gmail.com>
Date:   Tue Mar 31 14:51:25 2020 +1030

    tekhex: Uninitialised read
    
            * tekhex.c (pass_over): Check is_eof before reading buffer.

Diff:
---
 bfd/ChangeLog | 4 ++++
 bfd/tekhex.c  | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index bd43b676ba1..b3441335f06 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2020-03-31  Alan Modra  <amodra@gmail.com>
+
+	* tekhex.c (pass_over): Check is_eof before reading buffer.
+
 2020-03-30  Nick Clifton  <nickc@redhat.com>
 
 	PR binutils/pr25662
diff --git a/bfd/tekhex.c b/bfd/tekhex.c
index c2834b32d0c..0001457c743 100644
--- a/bfd/tekhex.c
+++ b/bfd/tekhex.c
@@ -525,7 +525,7 @@ pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *, char *))
 
       /* Find first '%'.  */
       is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1);
-      while (*src != '%' && !is_eof)
+      while (!is_eof && *src != '%')
 	is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1);
 
       if (is_eof)


More information about the Binutils-cvs mailing list