Re: [pseudo] [PATCH 1/7] pseudo.h: Avoid accessing unallocated memory

Mark Hatle <[email protected]> Wed, 1 Jul 2026 11:40:21 -0500
Newsgroups org.yoctoproject.lists.yocto-patches
Message-ID <[email protected]>

On 7/1/26 8:13 AM, Richard Purdie wrote:
> We can call STARTSWITH in cases where the item being searched for is longer
> than the string itself. Switch from memcmp to strncmp to avoid accessing
> unassigned memory.
> 
> Signed-off-by: Richard Purdie <[email protected]>
> ---
>   pseudo.h | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/pseudo.h b/pseudo.h
> index b6c13f2..1152c19 100644
> --- a/pseudo.h
> +++ b/pseudo.h
> @@ -99,7 +99,7 @@ extern char *pseudo_version;
>    #define PSEUDO_LIBDIR "lib"
>   #endif
>   
> -#define STARTSWITH(x, y) (!memcmp((x), (y), sizeof(y) - 1))
> +#define STARTSWITH(x, y) (strncmp(y, x, strlen(y)) == 0)

I've not looked at the users of STARTSWITH.  If they are all strings this is 
fine.  I believe memcmp was originally used because it could be items with nulls 
in it.  The bug may be that 'sizeof' was not calculated properly (specifically 
checking both X and Y, only y.. which can lead that the issue.)

>   
>   #ifndef PSEUDO_LOCALSTATEDIR
>    #define PSEUDO_LOCALSTATEDIR "var/pseudo"