From: Chris Moore <cmo...@hanoverdisplays.com>
Date: Fri, 7 Feb 2025 15:21:02 +0000
Subject: [psplash][PATCH] psplash.c: fix crash from length becoming
negative

Fixes [Yocto #14806]

If there is an error in read(), it returns -1 but this is just added to
length without checking first. This can lead to a runaway negative
value
for length which eventually crashes when memchr() is called with the
negative value.

The fix is to check the return from read() first and handle the error
state.

Signed-off-by: Chris Moore <cmo...@hanoverdisplays.com>
---
 psplash.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/psplash.c b/psplash.c
index ee1af6b..0db0aa4 100644
--- a/psplash.c
+++ b/psplash.c
@@ -140,6 +140,7 @@ psplash_main (PSplashFB *fb, int pipe_fd, int
timeout)
 {
   int            err;
   ssize_t        length = 0;
+  ssize_t        ret = 0;
   fd_set         descriptors;
   struct timeval tv;
   char          *end;
@@ -170,15 +171,16 @@ psplash_main (PSplashFB *fb, int pipe_fd, int
timeout)
          return;
        }
       
-      length += read (pipe_fd, end, sizeof(command) - (end -
command));
+      ret = read (pipe_fd, end, sizeof(command) - (end - command));
 
-      if (length == 0) 
+      if (ret <= 0) 
        {
          /* Reopen to see if there's anything more for us */
          close(pipe_fd);
          pipe_fd = open(PSPLASH_FIFO,O_RDONLY|O_NONBLOCK);
          goto out;
        }
+      length += ret;
 
       cmd = command;
       do {
-- 
2.45.2


Chris Moore 


Embedded Software Engineer


 


@ cmo...@hanoverdisplays.com 
T   +44 1273 477528 


www.hanoverdisplays.comHanover Displays Ltd. Southerham House, Southerham Lane, 
Lewes, East Sussex BN8 6JN, UK


Registered in England No: 1876684
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#64753): https://lists.yoctoproject.org/g/yocto/message/64753
Mute This Topic: https://lists.yoctoproject.org/mt/111098996/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to