Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 May 2026 15:52:23 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 295086] /bin/sh undefined variable in heredoc triggers assertion
Message-ID:  <bug-295086-227-8PBo6U85SV@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-295086-227@https.bugs.freebsd.org/bugzilla/>

index | next in thread | previous in thread | raw e-mail

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=295086

Dag-Erling Smørgrav <des@FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |des@FreeBSD.org

--- Comment #2 from Dag-Erling Smørgrav <des@FreeBSD.org> ---
I added some instrumentation to the INTOFF and INTON macros:

$ foo=$(cat <<eof)
INTOFF 1 /usr/src/bin/sh/input.c:252
INTON  0 /usr/src/bin/sh/input.c:255
INTOFF 1 /usr/src/bin/sh/memalloc.c:146
INTON  0 /usr/src/bin/sh/memalloc.c:153
INTOFF 1 /usr/src/bin/sh/parser.c:1114
INTON  0 /usr/src/bin/sh/parser.c:1122
INTOFF 1 /usr/src/bin/sh/parser.c:1204
INTON  0 /usr/src/bin/sh/parser.c:1223
> $bar
INTOFF 1 /usr/src/bin/sh/input.c:252
INTON  0 /usr/src/bin/sh/input.c:255
> eof
INTOFF 1 /usr/src/bin/sh/input.c:252
INTON  0 /usr/src/bin/sh/input.c:255
INTOFF 1 /usr/src/bin/sh/expand.c:468
INTOFF 1 /usr/src/bin/sh/output.c:208
INTON  0 /usr/src/bin/sh/output.c:212
/usr/obj/usr/src/amd64.amd64/bin/sh/sh: bar: parameter not set
INTOFF 1 /usr/src/bin/sh/error.c:78
INTOFF 2 /usr/src/bin/sh/var.c:793
INTON  1 /usr/src/bin/sh/var.c:822
INTON  0 /usr/src/bin/sh/eval.c:514
INTOFF 1 /usr/src/bin/sh/exec.c:434
INTOFF 2 /usr/src/bin/sh/exec.c:582
INTON  1 /usr/src/bin/sh/exec.c:588
INTON  0 /usr/src/bin/sh/exec.c:442
INTOFF 1 /usr/src/bin/sh/jobs.c:754
INTON  0 /usr/src/bin/sh/jobs.c:784
INTOFF 1 /usr/src/bin/sh/jobs.c:790
INTON  0 /usr/src/bin/sh/jobs.c:807
INTOFF 1 /usr/src/bin/sh/jobs.c:896
INTON  0 /usr/src/bin/sh/jobs.c:1001
INTOFF 1 /usr/src/bin/sh/var.c:251
INTON  0 /usr/src/bin/sh/jobs.c:916
INTOFF 2 /usr/src/bin/sh/var.c:751
INTOFF 1 /usr/src/bin/sh/jobs.c:963
INTOFF 2 /usr/src/bin/sh/jobs.c:515
INTON  1 /usr/src/bin/sh/jobs.c:528
INTON  0 /usr/src/bin/sh/jobs.c:967
INTOFF 3 /usr/src/bin/sh/var.c:337
INTON  2 /usr/src/bin/sh/var.c:365
INTON  1 /usr/src/bin/sh/var.c:778
INTOFF 2 /usr/src/bin/sh/var.c:337
INTON  1 /usr/src/bin/sh/var.c:365
INTON  0 /usr/src/bin/sh/var.c:260
INTOFF 1 /usr/src/bin/sh/var.c:793
INTON  0 /usr/src/bin/sh/var.c:822
INTOFF 1 /usr/src/bin/sh/memalloc.c:214
INTON  0 /usr/src/bin/sh/memalloc.c:226
INTOFF 1 /usr/src/bin/sh/redir.c:111
INTON  0 /usr/src/bin/sh/redir.c:153
INTOFF 1 /usr/src/bin/sh/redir.c:154
INTON  0 /usr/src/bin/sh/redir.c:160
INTOFF 1 /usr/src/bin/sh/memalloc.c:146
INTON  0 /usr/src/bin/sh/memalloc.c:153
INTOFF 1 /usr/src/bin/sh/jobs.c:1087
INTOFF 2 /usr/src/bin/sh/jobs.c:1206
INTON  1 /usr/src/bin/sh/jobs.c:1250
INTOFF 2 /usr/src/bin/sh/jobs.c:515
INTON  1 /usr/src/bin/sh/jobs.c:528
INTON  0 /usr/src/bin/sh/jobs.c:1127
INTON  -1 /usr/src/bin/sh/expand.c:526
INTOFF 0 /usr/src/bin/sh/redir.c:111
INTON  -1 /usr/src/bin/sh/redir.c:160
INTOFF 0 /usr/src/bin/sh/var.c:407

At least part of the issue appears to be that suppressint is off by one.  It
looks like we never turned interrupts back on after we tripped the undefined
variable.

-- 
You are receiving this mail because:
You are the assignee for the bug.

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-295086-227-8PBo6U85SV>