On Mon, Feb 10, 2025 at 12:54 AM Chris Moore via
lists.yoctoproject.org
<cmoore=hanoverdisplays....@lists.yoctoproject.org> wrote:
>
> 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));

good find.  even -Wunused-result would not catch it :)

>
> -      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 (#64754): https://lists.yoctoproject.org/g/yocto/message/64754
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