Bug 17421 - Fehlerhaftes Escaping von Druckerbeschreibungen und Standorten im cups-printer-Listener-Skript
Fehlerhaftes Escaping von Druckerbeschreibungen und Standorten im cups-printe...
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Printserver
UCS 2.3
Other Linux
: P5 normal (vote)
: UCS 2.3-2
Assigned To: Felix Botner
Philipp Hahn
:
: 17597 (view as bug list)
Depends on:
Blocks: 51196
  Show dependency treegraph
 
Reported: 2010-01-21 08:44 CET by Moritz Muehlenhoff
Modified: 2020-04-30 16:19 CEST (History)
2 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:
walkenhorst: Patch_Available+


Attachments
Ungetesteter Patch (968 bytes, text/plain)
2010-02-12 16:34 CET, Janek Walkenhorst
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Moritz Muehlenhoff univentionstaff 2010-01-21 08:44:52 CET
Aufgetreten beim Update eines Printservers auf UCS 2.3-0 bei einem Kunden:

Der Start des /etc/init.d/cups dauert sehr lange weil eine ganze Reihe von Druckern vergeblich angelegt werden. In /etc/init.d/cups findet sich Code, der durch alle Dateien in /var/cache/univention-printserver iteriert und diese ausführt. Wenn der Exitcode 0 ist, werden sie anschliessend gelöscht. Die Shell-Skripte rufen univention-lpadmin auf, das wiederum über Expect lpadmin aufruft. Das kann aber nicht ausgeführt werden, da das Escaping von Beschreibungen nicht korrekt ist. Ein anonymisiertes Beispiel für ein solches Skript:

#!/bin/sh
/usr/sbin/univention-lpadmin -u allow root,@iosgh -p pr14012 -L Foo and Bar -m foo/km40Pnp.ppd -D Konica MIN bizhub 40P -v cupspykota:lpd://10.36.44.71 -E

Es fehlen min. doppelte Anführungszeichen um die Beschreibung und den Standort. Ändere ich das Skript in 

#!/bin/sh
/usr/sbin/univention-lpadmin -u allow root,@iosgh -p pr14012 -L "Foo and Bar" -m foo/km40Pnp.ppd -D "Konica MIN bizhub 40P" -v cupspykota:lpd://10.36.44.71 -E

wird der Drucker angelegt. Die Dateien in /var/cache/univention-printserver werden durch das cups-printer Listener-Skript offenbar fehlerhaft erzeugt.
Comment 1 Stefan Gohmann univentionstaff 2010-01-21 08:49:03 CET
Das hatten wir meines Wissens bereits zur 2.3 angepasst aber scheinbar hier vergessen.
Comment 2 Moritz Muehlenhoff univentionstaff 2010-01-21 09:05:14 CET
(In reply to comment #0)
> Aufgetreten beim Update eines Printservers auf UCS 2.3-0 bei einem Kunden:
> 
> Der Start des /etc/init.d/cups dauert sehr lange weil eine ganze Reihe von
> Druckern vergeblich angelegt werden. In /etc/init.d/cups findet sich Code, der
> durch alle Dateien in /var/cache/univention-printserver iteriert und diese
> ausführt. Wenn der Exitcode 0 ist, werden sie anschliessend gelöscht. Die
> Shell-Skripte rufen univention-lpadmin auf, das wiederum über Expect lpadmin
> aufruft. Das kann aber nicht ausgeführt werden, da das Escaping von
> Beschreibungen nicht korrekt ist. Ein anonymisiertes Beispiel für ein solches
> Skript:
> 
> #!/bin/sh
> /usr/sbin/univention-lpadmin -u allow root,@iosgh -p pr14012 -L Foo and Bar -m
> foo/km40Pnp.ppd -D Konica MIN bizhub 40P -v cupspykota:lpd://10.36.44.71 -E
> 
> Es fehlen min. doppelte Anführungszeichen um die Beschreibung und den Standort.
> Ändere ich das Skript in 
> 
> #!/bin/sh
> /usr/sbin/univention-lpadmin -u allow root,@iosgh -p pr14012 -L "Foo and Bar"
> -m foo/km40Pnp.ppd -D "Konica MIN bizhub 40P" -v cupspykota:lpd://10.36.44.71
> -E
> 
> wird der Drucker angelegt. Die Dateien in /var/cache/univention-printserver
> werden durch das cups-printer Listener-Skript offenbar fehlerhaft erzeugt.

Kleine Korrektur: Wenn ich den Befehl in lpadmin mit " angebe funktioniert es, wenn ich die " in das Skript einfüge, das univention-lpadmin aufruft, funktioniert es nicht. 
Das Maschinen-Kennwort in /etc/machine.secret ist aber korrekt, ein authentifiziertes ldapsearch auf das Maschinenkonto mit dem Inhalt von /etc/machine.secret funktioniert.
Comment 3 Stefan Gohmann univentionstaff 2010-02-09 13:17:01 CET
*** Bug 17597 has been marked as a duplicate of this bug. ***
Comment 4 Stefan Gohmann univentionstaff 2010-02-10 15:01:28 CET
Bitte zunächst einen Patch an diesen Bug hängen (2.3-1 ist noch nicht freigegeben).
Comment 5 Janek Walkenhorst univentionstaff 2010-02-12 16:34:18 CET
Created attachment 2293 [details]
Ungetesteter Patch

Ich hänge hier mal die erste (ungetestete!) Version des Patches an.
Comment 6 Janek Walkenhorst univentionstaff 2010-02-15 11:08:47 CET
(In reply to comment #5)
> Created an attachment (id=2293) [details]
> Ungetesteter Patch
> 
> Ich hänge hier mal die erste (ungetestete!) Version des Patches an.
Patch_Available: Patch funktioniert
Comment 7 Felix Botner univentionstaff 2010-02-19 08:58:42 CET
Aus den Argumenten werden ' und " jetzt entfernt, außerdem führende und Leerzeichen am Ende. 

Gebaut in ucs2.3-2.
Comment 8 Philipp Hahn univentionstaff 2010-02-22 11:51:01 CET
Der Patch ist zwar etwas zu übereifrig, da doppelte Anführungszeichen innerhalb von einfachen Anführungszeichen okay sind. Einfache Anführungszeichen ließen sich aus richtig esacpen: s/'/'\''/g
Patch funktioniert ansonsten.

# /etc/init.d/cups stop
# udm shares/printer create --superordinate "cn=printers,`ucr get ldap/base`" --set name="cc" --set model=None --set spoolHost="`ucr get ldap/master`" --set sambaName="c c" --set uri=file:"/tmp/c c" --set location='$PATH `date` $(date) '\'foo\'' "bar"' --set description='$PATH `date` $(date) '\'foo\'' "bar"'
Object created: cn=cc,cn=printers,dc=univention,dc=qa
# cat /var/cache/univention-printserver/*
#!/bin/sh
/usr/sbin/univention-lpadmin '-u' 'allow:all' '-p' 'cc' '-L' '$PATH `date` $(date) foo bar' '-D' '$PATH `date` $(date) foo bar' '-v' 'file:/tmp/c c' '-E'
# /etc/init.d/cups start
# ls /var/cache/univention-printserver/
#

ChangeLog-Eintrag ist vorhanden. VERIFIED
Comment 9 Stefan Gohmann univentionstaff 2010-05-18 10:00:04 CEST
UCS 2.3-2 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden:
"Clone This Bug".