From: William Lee Irwin III <wli@holomorphy.com>
To: linux-kernel@vger.kernel.org
Subject: [9/12] fix duplicate environment variables passed to init
Date: Sun, 13 Jun 2004 17:43:54 -0700 [thread overview]
Message-ID: <20040614004354.GX1444@holomorphy.com> (raw)
In-Reply-To: <20040614004147.GW1444@holomorphy.com>
* Fixed argument processing bug in init/main.c (Eric Delaunay)
This fixes Debian BTS #58566.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=58566
From: Eric Delaunay <delaunay@lix.polytechnique.fr>
Message-Id: <200002201918.UAA02327@jazz.pontchartrain.fr>
Subject: pb in handling parameters on kernel command line
To: submit@bugs.debian.org (debian bug tracking system)
Hello, I found some bugs in kernel command line parser. AFAIK, they are not
Debian nor sparc specific but I'm not subscribed to linux-kernel mailing list
and since I'm involved with boot-floppies (mainly for sparc), I think I'm right
to report it here. Feel free to forward it upstream (I checked the latest
2.3.46 sources and it seems these bugs are still there).
These bugs are not release critical. The latter just not gives the user a
chance to overwrite TERM env var at boot time. It could be just
inconvenient for serial console boot, and in this case, our busybox' init is
already enforcing TERM=vt102.
Nevertheless if it could not be fixed before the release, I could even write a
workaround in busybox' init (it's just a matter of rewriting getenv()).
At last, it does not affect sysvinit package because serial console tty is
controlled by a getty process which is reading terminal settings on its command
line (take a look in inittab for T0 entries, if any).
Ok, here is my modest contribution to kernel hacking. I don't know much about
kernel internals but it seems that argument parsing is a bit broken.
One trivial patch for command line like "init=/bin/sh console=prom" where
console=prom is replaced by lot of spaces in previous call to setup_arch() on
sparc, therefore the line parsed by parse_options() is really
"init=/bin/sh " and a lot of null args are pushed into argv_init.
The other patch is for command line like "TERM=vt100" where both default & user
TERM entries are pushed into the env array.
Taking a look into /proc/1/environ, it shows up:
HOME=/
TERM=linux
TERM=vt100
It appears that ash (maybe other shells too) is giving the latter entry but
glibc getenv() is giving the former. It is therefore impossible to get entry
from the user in a C program like busybox' init (used in Debian boot-floppies).
I guess getenv() is not written to support duplicate entries, therefore the
kernel should avoid such construct.
Index: linux-2.5/init/main.c
===================================================================
--- linux-2.5.orig/init/main.c 2004-06-13 11:57:47.000000000 -0700
+++ linux-2.5/init/main.c 2004-06-13 12:08:56.000000000 -0700
@@ -268,6 +268,8 @@
panic_later = "Too many boot env vars at `%s'";
panic_param = param;
}
+ if (!strncmp(param, envp_init[i], val - param))
+ break;
}
envp_init[i] = param;
} else {
next prev parent reply other threads:[~2004-06-14 0:47 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-14 0:31 [0/12] Debian bugfixes William Lee Irwin III
2004-06-14 0:33 ` [1/12] don't dereference netdev->name before register_netdev() William Lee Irwin III
2004-06-14 0:34 ` [2/12] lower priority of "too many keys" msg in atkbd.c William Lee Irwin III
2004-06-14 0:36 ` [3/12] remove irda usage of isa_virt_to_bus() William Lee Irwin III
2004-06-14 0:37 ` [4/12] unregister driver if probing fails in sb_card.c William Lee Irwin III
2004-06-14 0:38 ` [5/12] Ignore errors from tw_setfeature in 3w-xxxx.c William Lee Irwin III
2004-06-14 0:39 ` [6/12] fix advansys.c highmem bugs William Lee Irwin III
2004-06-14 0:40 ` [7/12] Handle NO_SENSE in sd_rw_intr in sd.c William Lee Irwin III
2004-06-14 0:41 ` [8/12] fake inquiry for Sony Clie PEG-TJ25 in unusual_devs.h William Lee Irwin III
2004-06-14 0:43 ` William Lee Irwin III [this message]
2004-06-14 0:45 ` [10/12] fix handling of '/' embedded in filenames in isofs William Lee Irwin III
2004-06-14 0:47 ` [11/12] fix isofs ignoring noexec and mode mount options William Lee Irwin III
2004-06-14 0:48 ` [12/12] fix thread_info.h ignoring __HAVE_THREAD_FUNCTIONS William Lee Irwin III
2004-06-14 8:16 ` Christoph Hellwig
2004-06-14 8:34 ` William Lee Irwin III
2004-06-14 10:19 ` Roman Zippel
2004-06-14 10:23 ` Christoph Hellwig
2004-06-14 10:47 ` Roman Zippel
2004-06-14 8:15 ` [10/12] fix handling of '/' embedded in filenames in isofs Christoph Hellwig
2004-06-14 8:14 ` [8/12] fake inquiry for Sony Clie PEG-TJ25 in unusual_devs.h Christoph Hellwig
2004-06-14 8:14 ` [7/12] Handle NO_SENSE in sd_rw_intr in sd.c Christoph Hellwig
2004-06-14 4:26 ` [6/12] fix advansys.c highmem bugs Andrew Morton
2004-06-14 8:11 ` William Lee Irwin III
2004-06-14 8:13 ` Christoph Hellwig
2004-06-14 8:12 ` [5/12] Ignore errors from tw_setfeature in 3w-xxxx.c Christoph Hellwig
2004-06-14 8:11 ` [3/12] remove irda usage of isa_virt_to_bus() Christoph Hellwig
2004-06-14 8:11 ` [2/12] lower priority of "too many keys" msg in atkbd.c Christoph Hellwig
2004-06-14 4:14 ` [1/12] don't dereference netdev->name before register_netdev() Andrew Morton
2004-06-14 4:27 ` Jeff Garzik
2004-06-14 5:26 ` Herbert Xu
2004-06-14 8:21 ` William Lee Irwin III
2004-06-14 8:10 ` Christoph Hellwig
2004-06-14 8:22 ` William Lee Irwin III
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20040614004354.GX1444@holomorphy.com \
--to=wli@holomorphy.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox