Btw, isnt it better to return early if nothing can be compared? On Mon, Sep 28, 2026 at 6:01 PM Mattias Barthel <[email protected]> wrote:
> Yes, that is correct. I use 2020.04. > > On Mon, Sep 28, 2026 at 5:33 PM Simon Glass <[email protected]> wrote: > >> Hi Mattias, >> >> On Wed, 23 Sept 2026 at 01:22, Mattias Barthel <[email protected]> >> wrote: >> > >> > Hello, u-boot. >> > >> > If bootdelaykey, bootstopkey and their corresponding default >> > configuration strings are all empty, presskey_max evaluates to >> > zero. >> > >> > Receiving serial input in this state causes the buffer management >> > logic to execute with presskey_max == 0, resulting in an unsigned >> > underflow in the expression: >> > >> > presskey_max - 1 >> > >> > This can lead to out-of-bounds memory accesses and an apparent >> > hang during autoboot. >> > >> > >> > >> > diff --git a/common/autoboot.c b/common/autoboot.c >> > index 0a59b81ae26..ea5430bb8e1 100644 >> > --- a/common/autoboot.c >> > +++ b/common/autoboot.c >> > @@ -184,6 +184,12 @@ static int passwd_abort_key(uint64_t etime) >> > delaykey[i].str ? delaykey[i].str : >> "NULL"); >> > } >> > >> > + /* No delay/stop strings configured, abort is impossible. */ >> > + if (presskey_max == 0) { >> > + printf("No abort key configured, booting\n"); >> > + return 0; >> > + } >> > + >> > /* In order to keep up with incoming data, check timeout only >> > * when catch up. >> > */ >> > >> > >> > ---------- Forwarded message --------- >> > From: Simon Glass <[email protected]> >> > Date: Wed, Sep 23, 2026 at 1:22 AM >> > Subject: Re: autoboot.c >> > To: Mattias Barthel <[email protected]> >> > >> > >> > Hi Mattias, >> > >> > Would you please send this email to the U-Boot list and cc me? >> > >> > Thanks, >> > Simon >> > >> > On Tue, 22 Sept 2026 at 00:39, Mattias Barthel < >> [email protected]> wrote: >> > > >> > > Hello, >> > > >> > > I am not sure who to contact regarding the autoboot.c in u-boot. >> > > Since I could see your name as last commiter along those lines I just >> thought I would >> > > reach out to you. >> > > >> > > If bootdelaykey, bootstopkey and their corresponding default >> > > configuration strings are all empty, presskey_max evaluates to >> > > zero. >> > > >> > > Receiving serial input in this state causes the buffer management >> > > logic to execute with presskey_max == 0, resulting in an unsigned >> > > underflow in the expression: >> > > >> > > presskey_max - 1 >> > > >> > > This can lead to out-of-bounds memory accesses and an apparent >> > > hang during autoboot. >> > > >> > > >> > > I just added this: >> > > >> > > >> > > + /* No delay/stop strings configured, abort is impossible. */ >> > > + if (presskey_max == 0) { >> > > + printf("No abort key configured, booting\n"); >> > > + return 0; >> > > + } >> > > + >> > > >> >> Can you check which version of U-Boot you are using? It looks like >> this problem was fixed in this patch from 2021: >> >> e088f0c3d87 autoboot: fix illegal memory access when stop key and >> delay key are empty >> >> Regards, >> Simon >> > > > -- > Mattias Barthel > -- Mattias Barthel
