retitle 226292 xdm: config script doesn't set debconf choices to owners if choices is null
tag 226292 - moreinfo
thanks
On Sat, Jan 10, 2004 at 07:32:15PM +0000, Julian Gilbey wrote:
> On Fri, Jan 09, 2004 at 01:27:19PM -0500, Branden Robinson wrote:
> > On Wed, Jan 07, 2004 at 06:55:04AM +0000, Julian Gilbey wrote:
> > > On Tue, Jan 06, 2004 at 09:19:54PM -0500, Branden Robinson wrote:
> > > > Please show me (er, well, mail this bug) the output of the misbehaving
> > > > dpkg-reconfigure command after doing this:
> > > >
> > > > # export DEBUG_XFREE86_PACKAGE=yes
> > >
> > > Not so much info there, I'm afraid :-(
> >
> > Grrr.
> >
> > All right, show me *this*:
> >
> > /usr/share/debconf/frontend sh -x /var/lib/dpkg/info/xdm.config reconfigure
>
> Here it is:
[skipping to the good bits]
> + DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
> + OWNERS=
> + db_metaget shared/default-x-display-manager owners
> + echo METAGET shared/default-x-display-manager owners
> + local IFS=
>
> + local _LINE
> + read -r _LINE
> + RET=kdm, xdm
> + return 0
> + OWNERS=kdm, xdm
> + CHOICES=
> + db_metaget shared/default-x-display-manager choices
> + echo METAGET shared/default-x-display-manager choices
> + local IFS=
>
> + local _LINE
> + read -r _LINE
> + RET=
> + return 0
> + CHOICES=
> + [ -n kdm, xdm -a -n ]
> + NEW_DEFAULT=
> + db_get shared/default-x-display-manager
> + echo GET shared/default-x-display-manager
> + local IFS=
>
> + local _LINE
> + read -r _LINE
> + RET=
> + return 0
> + NEW_DEFAULT=
> + [ -n ]
> + exit 0
> polya2:~ #
Okay, let's try to understand this with reference to the actual shell
script.
19 # set default display manager
20 DEFAULT_DISPLAY_MANAGER_FILE=/etc/X11/default-display-manager
21
22 OWNERS=
23 if db_metaget shared/default-x-display-manager owners; then
24 OWNERS="$RET"
25 fi
Looks like this worked right. $OWNERS got set to "kdm, xdm".
26
27 CHOICES=
28 if db_metaget shared/default-x-display-manager choices; then
29 CHOICES="$RET"
30 fi
I'm not sure this worked as expected. db_metaget exited with a 0 exit
status, but $CHOICES was set to "".
32 if [ -n "$OWNERS" -a -n "$CHOICES" ]; then
$OWNERS is non-null but $CHOICES is not. Therefore the body of this
block is skipped.
Hmm, the body of this loop should probably be entered if $OWNERS is
non-null. In fact I don't reference $CHOICES within it, so I was
probably being overly cautious. I see this happened in revision 506.
Okay, I think I have found the bug. I will fix this and look for
similar bad logic in the other maintainer scripts.
Thanks for your report.
--
G. Branden Robinson | You can have my PGP passphrase when
Debian GNU/Linux | you pry it from my cold, dead
branden@debian.org | brain.
http://people.debian.org/~branden/ | -- Adam Thornton
Attachment:
signature.asc
Description: Digital signature