Package: debconf Version: 1.5.41 Severity: normal Hi folks,
after spending quite some time on debugging a nullmailer postinst issue, I discovered that debconf's db_set chokes when multi-line values are passed to it (in this particular case, /etc/mailname contained two lines, and db_set shared/mailname "`cat /etc/mailname`" was called). I'm not quite sure if multi-line values should be supported (the manual doesn't seem to mention supporting it, nor requiring that values be single line). Right now, if a multiline value is passed to db_set, it simply sends it over causing debconf to interpret the second line as an invalid command, breaking the rest of the script (due to a desync in command/responses). This can be reproduced with the following script (for some reason I needed to db_get's after the broken db_set, not sure why that is, the original case used a db_set). #!/bin/sh . /usr/share/debconf/confmodule MULTI='foo bar' db_get debconf/frontend echo $? db_set debconf/frontend "$MULTI" echo $? db_get debconf/frontend echo $? Save this script as "multiline-db_set" and run it using: matthijs@grubby:~$ debconf ./multline-db_set debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied 0 0 20 debconf: DbDriver "config": could not write /var/cache/debconf/config.dat-new: Permission denied Note that the first db_get was only added to show that the db_get normally works (return 0), but as you can see here, the second db_get returns 20 instead. Also, you should ignore the permission errors, since I'm not running as root. Behaviour is the same when running as root, but without the permission errors. In any case, I would expect that debconf would (in decreasing order of preference): 1. Support multiline values properly. It seems there is a debconf-escape command, but looking at the code it's only used for return values, not command arguments (I guess this was implemented for the metaget command for example, not db_get, then?). 2. Define that values must be a single line, and show a big fat error when a debconf-using script violates this requirement. Possible problem here is of course that the debconf-using script isn't usually in a position to show errors? 3. Silently truncate the value to the first line in confmodule, to at least prevent the script from silently failing completely. Of course 1. is preferred, but I suspect that would require invasive changes. If 2. is not an option for the reasons I suggested, then perhaps debconf should display the error instead of / in addition to returning it to the confmodule (Also see #657626 [1], about showing debug messages for these errors). Gr. Matthijs [1]: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=657626 -- System Information: Debian Release: wheezy/sid APT prefers testing APT policy: (990, 'testing'), (500, 'unstable'), (500, 'stable'), (1, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0 (SMP w/4 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 debconf depends on: ii perl-base 5.14.2-6 Versions of packages debconf recommends: ii apt-utils 0.8.15.9 ii debconf-i18n 1.5.41 Versions of packages debconf suggests: ii debconf-doc <none> ii debconf-utils <none> ii libgtk2-perl 2:1.223-1+b2 ii libnet-ldap-perl <none> ii libqtcore4-perl <none> ii libqtgui4-perl <none> ii libterm-readline-gnu-perl <none> ii perl 5.14.2-6 ii whiptail 0.52.11-2.1 -- debconf information excluded -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org