Hi Casey, Hope you're doing well. I wanted to follow up on this patch once more. Wanted to make sure it hadn't been lost track of.
You kindly gave it a Reviewed-by back on June 17, and I haven't seen any further activity on it , Patchwork still showing it as "New". I just wanted to check whether it's been picked up into your tree, or if there's anything still needed from my end. Thanks again for your time and review. Regards, Vivek Ray On Wed, Jun 17, 2026 at 8:26 PM Casey Connolly <[email protected]> wrote: > Hi Vivek, > > On 10/06/2026 15:54, Vivek Ray wrote: > > The configure_env() function copies root compatible strings into a > > 32-byte buffer prior to parsing. If a compatible string exceeds this > > limit, strlcpy() silently truncates it, producing a malformed fdtfile > > path and a silent boot failure with no indication of the root cause. > > > > Bump buf[] to 128 bytes and dt_path[] to 256 bytes to accommodate longer > > compatible strings. Also, add explicit truncation checks after both > > strlcpy() calls and emit a log_warning() with the offending compatible > > string to make such failures easier to diagnose. > > > > Signed-off-by: Vivek Ray <[email protected]> > > Thanks for the quick respin! > > Reviewed-by: Casey Connolly <[email protected]> > > > > > --- > > > > Changes in V2: > > - Bump buf[] from 32 to 128 bytes and dt_path[] from 64 to 256 (Casey > Connolly) > > - Fix line size check, use > not >= (Casey Connolly) > > > > --- > > arch/arm/mach-snapdragon/board.c | 18 ++++++++++++++---- > > 1 file changed, 14 insertions(+), 4 deletions(-) > > > > diff --git a/arch/arm/mach-snapdragon/board.c > b/arch/arm/mach-snapdragon/board.c > > index 829a0109ac7..d9390d9b5d3 100644 > > --- a/arch/arm/mach-snapdragon/board.c > > +++ b/arch/arm/mach-snapdragon/board.c > > @@ -390,13 +390,14 @@ static void configure_env(void) > > { > > const char *first_compat, *last_compat; > > char *tmp; > > - char buf[32] = { 0 }; > > + char buf[128] = { 0 }; > > + int len = 0; > > /* > > * Most DTB filenames follow the scheme: > qcom/<soc>-[vendor]-<board>.dtb > > * The vendor is skipped when it's a Qualcomm reference board, or > the > > * db845c. > > */ > > - char dt_path[64] = { 0 }; > > + char dt_path[256] = { 0 }; > > int compat_count, ret; > > ofnode root; > > > > @@ -417,7 +418,11 @@ static void configure_env(void) > > return; > > } > > > > - strlcpy(buf, first_compat, sizeof(buf) - 1); > > + /* A safety check to avoid silent failure due to name truncation */ > > + len = strlcpy(buf, first_compat, sizeof(buf) - 1); > > + if (len > sizeof(buf) - 1) > > + log_warning("compatible '%s' got truncated, fdtfile name > too long\n", > > + first_compat); > > tmp = buf; > > > > /* The Qualcomm reference boards (RBx, HDK, etc) */ > > @@ -468,7 +473,12 @@ static void configure_env(void) > > > > /* Copy the last compat (e.g. "qcom,sdm845") into buf */ > > memset(buf, 0, sizeof(buf)); > > - strlcpy(buf, last_compat, sizeof(buf) - 1); > > + > > + /* check for name truncation */ > > + len = strlcpy(buf, last_compat, sizeof(buf) - 1); > > + if (len > sizeof(buf) - 1) > > + log_warning("compatible '%s' got truncated, > fdtfile name too long\n", > > + last_compat); > > tmp = buf; > > > > /* strsep() is destructive, it replaces the comma with a > \0 */ > > -- > // Casey (she/her) > >
