Bug#1017922: java-common: update-java-alternatives --list propagates the exit code of a random grep, causing inconsistencies
mminot
mminot at yseop.com
Mon Aug 22 16:19:21 BST 2022
Package: java-common
Version: 0.72
Severity: normal
Dear Maintainer,
The update-java-alternatives shell script, which using the "list" action ("--list" / "-l"), ends with a call to the "do_list" function, which ends with:
[ -n "$verbose" ] && egrep "$which" $i
Therefore the exit status of this "foo && bar" becomes the return status of the function itself, and since there is no explicit "exit", it also becomes the exit status of the script itself.
As a result, this listing operation, which, as far as I can tell, should almost always exit with a 0 status, often exits with a 1 status.
This can either occur if that grep founds nothing or, more frequently it seems, if the "verbose" variable is empty.
In other words, I got a different exit status depending on whether verbosity ("--verbose") was turned on or not, which is a surprising result for any executable indeed.
$ update-java-alternatives --verbose --list &> /dev/null; echo $?
0
$ update-java-alternatives --list &> /dev/null; echo $?
1
In my humble opinion, the "do_list" function should end with an explicit "return 0".
Here are my currently listed Java versions:
java-1.11.0-openjdk-amd64 1111 /usr/lib/jvm/java-1.11.0-openjdk-amd64
* What led up to the situation?
Random crashes in a Dockerfile involving update-java-alternatives.
* What exactly did you do (or not do) that was effective (or ineffective)?
Tried with and without "--verbose"; used "|| true"; looked up the source script.
* What was the outcome of this action?
Bypassing the exit status.
* What outcome did you expect instead?
There should be no need to bypass it.
-- System Information:
Debian Release: bullseye/sid
APT prefers focal-updates
APT policy: (500, 'focal-updates'), (500, 'focal-security'), (500, 'focal'), (100, 'focal-backports')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 5.15.0-46-generic (SMP w/8 CPU cores)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
java-common depends on no packages.
java-common recommends no packages.
Versions of packages java-common suggests:
pn default-jre <none>
-- no debconf information
More information about the pkg-java-maintainers
mailing list