Package: sysvinit Version: 2.88dsf-13.1+squeeze1 Severity: minor Tags: patch
I added a new entry to inittab on a busy host which did not seem to start upon invoking `telinit q`. Syslog received the following message: Nov 22 10:16:29 r7 init: /etc/inittab[93]: process field too long This limit (127 characters) is not documented in man 5 inittab, nor anywhere else I looked. In init's source file, there are error messages the explicitely state length limits for other fields in inittab (which a user is much less likely to overflow, I think), which seems kind of weird. The attached patch adds the length limit information to init's error message and to the appropriate man page. -- System Information: Debian Release: 6.0.6 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-0.bpo.3-amd64 (SMP w/2 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages sysvinit depends on: ii initscripts 2.88dsf-13.1+squeeze1 scripts for initializing and shutt ii libc6 2.11.3-4 Embedded GNU C Library: Shared lib ii libselinux1 2.0.96-1 SELinux runtime shared libraries ii libsepol1 2.0.41-1 SELinux library for manipulating b ii sysv-rc 2.88dsf-13.1+squeeze1 System-V-like runlevel change mech ii sysvinit-utils 2.88dsf-13.1+squeeze1 System-V-like utilities sysvinit recommends no packages. sysvinit suggests no packages. -- no debconf information
diff -u -r a/sysvinit-2.88dsf/man/inittab.5 b/sysvinit-2.88dsf/man/inittab.5 --- a/sysvinit-2.88dsf/man/inittab.5 2009-09-10 10:28:49.000000000 +0200 +++ b/sysvinit-2.88dsf/man/inittab.5 2012-11-22 10:32:17.554426005 +0100 @@ -66,7 +66,7 @@ .B init will not do utmp and wtmp accounting for that process. This is needed for gettys that insist on doing their own utmp/wtmp housekeeping. This is also -a historic bug. +a historic bug. The length of this fiels is limited to 127 characters. .\"}}} .PP The \fIrunlevels\fP field may contain multiple characters for different diff -u -r a/sysvinit-2.88dsf/src/init.c b/sysvinit-2.88dsf/src/init.c --- a/sysvinit-2.88dsf/src/init.c 2010-04-13 11:48:54.000000000 +0200 +++ b/sysvinit-2.88dsf/src/init.c 2012-11-22 10:28:54.653475075 +0100 @@ -1314,7 +1314,7 @@ if (rlevel && strlen(rlevel) > 11) strcpy(err, "rlevel field too long (max 11 characters)"); if (process && strlen(process) > 127) - strcpy(err, "process field too long"); + strcpy(err, "process field too long (max 127 characters)"); if (action && strlen(action) > 32) strcpy(err, "action field too long"); if (err[0] != 0) {