Re: [yocto-patches] [pseudo] [PATCH 1/7] pseudo.h: Avoid accessing unallocated memory
Mark Hatle <[email protected]> Wed, 1 Jul 2026 13:59:34 -0500
| Newsgroups | org.yoctoproject.lists.yocto-patches |
|---|---|
| Message-ID | <[email protected]> |
On 7/1/26 11:47 AM, Richard Purdie via lists.yoctoproject.org wrote: > On Wed, 2026-07-01 at 11:40 -0500, Mark Hatle wrote: >> 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.) > > It is only used by pseudo_util.c against envp: > > pseudo_util.c: if (STARTSWITH(envp[i], PRELINK_LIBRARIES "=")) { > pseudo_util.c: if (STARTSWITH(envp[i], PRELINK_LIBRARIES "=")) { > pseudo_util.c: if (STARTSWITH(envp[i], PRELINK_PATH "=")) { > pseudo_util.c: if (STARTSWITH(envp[i], PRELINK_LIBRARIES "=")) continue; > pseudo_util.c: if (STARTSWITH(envp[i], PRELINK_PATH "=")) continue; > > i.e. always on strings. > > The bug is that y can be longer than x and the memcmp check doesn't > check for that. I could have put more logic in there but we may as well > just use strncmp. Agreed, if we're limiting to strings then better to use strncmp. --Mark > Cheers, > > Richard > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#4351): https://lists.yoctoproject.org/g/yocto-patches/message/4351 > Mute This Topic: https://lists.yoctoproject.org/mt/120064771/3616948 > Group Owner: [email protected] > Unsubscribe: https://lists.yoctoproject.org/g/yocto-patches/leave/13201099/3616948/947757854/xyzzy [[email protected]] > -=-=-=-=-=-=-=-=-=-=-=- > >