kdesudo incompatibility with kdesu

Bug #258799 reported by hoganrobert
2
Affects Status Importance Assigned to Milestone
KdeSudo
Fix Released
Undecided
Unassigned
kdesudo (Ubuntu)
Fix Released
Undecided
Unassigned
Nominated for Jaunty by tbjablin

Bug Description

kdesu.distrib -c 'printf \"ControlPort 9051\" >> /etc/tor/torrc' - WORKS
kdesudo -c 'printf \"ControlPort 9051\" >> /etc/tor/torrc' - DOES NOT WORK

The latter reports:

"ControlPort
printf: warning: ignoring excess arguments, starting with `9051"'

Related branches

Revision history for this message
hoganrobert (robert-roberthogan) wrote :

Running kdesudo - 2.5.1-0ubuntu3. Seems related to bug 109831, but was not fixed by the patch applied for it.

Revision history for this message
hoganrobert (robert-roberthogan) wrote :

More accurate description:

kdesu.distrib -c 'printf "ControlPort 9051\n" >> /etc/tor/torrc' - WORKS
kdesudo -c 'printf "ControlPort 9051\n" >> /etc/tor/torrc' - DOES NOT WORK

The latter gives:

passprompt
ControlPort 9051
printf: warning: ignoring excess arguments, starting with `>>'

and nothing gets written to /etc/tor/torrc.

The command displayed in the kdesudo dialog is:

printf 'ControlPort 9051\n' '>>' '/etc/tor/torrc'

so each element of the command is being treated as a separate command.

Revision history for this message
hoganrobert (robert-roberthogan) wrote :

This patch:

- Fixes an infinite loop in 'kdesudo -s'
- Removes a compiler warning.
- Documents the escape sequences and quoting required to run shell commands.
  (Not sure about the docbook patch.)

I've experimented quite a bit with the command parsing required to make
kdesudo functionally equivalent with kdesu. I tried using the parsing found in
kdesu and while this fixes the quoting of each element for some commands, the
fact that kdesudo is not using the Suprocess/ttyprocess and kdesud abstraction
layers seems fatal. The code required to take a naively quoted/escaped command
such as this one used by KDevelop:

kdesu -t -c 'cd '/home/robert/kdesudo-2.6-new' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" LC_MESSAGES="C" LC_CTYPE="C" make install'

and make it work with kdesudo is beyond me. AFAICS, kdesudo would need to prepend
a shell to the command (sh -c) and properly quote and escape each element before
passing it to sudo. This would be a huge job and extremely brittle.

Since kdesudo is kubuntu-specific the more pragmatic approach would seem to be to
document the command format kdesudo requires and patch kdesu-using packages as
appropriate.

So kubuntu-KDevelop should use:

kdesudo -t -c "sh -c 'cd '/home/robert/kdesudo-2.6-new' && WANT_AUTOCONF_2_5=\"1\" WANT_AUTOMAKE_1_6=\"1\" LC_MESSAGES=\"C\" LC_CTYPE=\"C\" make install'"

This could also be passed upstream since it also works with kdesu.distrib.

For my own case the command required by kdesudo is:

kdesudo -c "sh -c 'printf \"ControlPort 9051\n\" >> /etc/tor/torrc'"

This also works with kdesu.distrib.

Changed in kdesudo:
status: New → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package kdesudo - 3.4.2-0ubuntu1

---------------
kdesudo (3.4.2-0ubuntu1) karmic; urgency=low

  [ Anthony Mercatante ]
  * New upstream release:
    - Closes LP: #281877
    - Closes LP: #258799
    - Closes Debian #525292
    - Closes LP: #365956

  [ Florian Reinhard ]
  * Closes LP: #285084

 -- Florian Reinhard <email address hidden> Thu, 25 Jun 2009 23:02:47 +0200

Changed in kdesudo (Ubuntu):
status: New → Fix Released
Changed in kdesudo:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.