Bug 25231 - Absturz des UMC-Servers bei invalidem JSON-Body
Absturz des UMC-Servers bei invalidem JSON-Body
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UMC (Generic)
UCS 3.0
Other Linux
: P5 critical (vote)
: UCS 3.0-1
Assigned To: Andreas Büsching
Jascha Geerds
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2011-12-06 16:55 CET by Alexander Kläser
Modified: 2012-03-04 14:34 CET (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:


Attachments
Test-Skript (291 bytes, text/plain)
2011-12-06 16:55 CET, Alexander Kläser
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Kläser univentionstaff 2011-12-06 16:55:37 CET
Created attachment 3971 [details]
Test-Skript

Wird dem UMC-Server ein nicht gültiger JSON-Body bei der Authentifizierung
gesendet, stürzt der Server mit einem Traceback ab:

====================
Traceback (most recent call last):
  File "/usr/sbin/univention-management-console-server", line 206, in <module>
    umc_daemon.do_action()
  File "/usr/lib/pymodules/python2.6/daemon/runner.py", line 186, in do_action
    func(self)
  File "/usr/lib/pymodules/python2.6/daemon/runner.py", line 131, in _start
    self.app.run()
  File "/usr/sbin/univention-management-console-server", line 191, in run
    notifier.loop()
  File "/usr/lib/pymodules/python2.6/notifier/nf_generic.py", line 284, in loop
    step()
  File "/usr/lib/pymodules/python2.6/notifier/nf_generic.py", line 271, in step
    not __sockets[ cond ][ fd ]( sock_obj ):
  File
"/usr/lib/pymodules/python2.6/univention/management/console/protocol/server.py",
line 149, in _receive
    res = Response( msg )
  File
"/usr/lib/pymodules/python2.6/univention/management/console/protocol/message.py",
line 242, in __init__
    self.options = request.options
  File
"/usr/lib/pymodules/python2.6/univention/management/console/protocol/message.py",
line 151, in <lambda>
    options = property( lambda self: self._get_key( 'options' ), lambda self,
value: self._set_key( 'options', value ) )
  File
"/usr/lib/pymodules/python2.6/univention/management/console/protocol/message.py",
line 136, in _get_key
    return self.body.get( key )
AttributeError: 'str' object has no attribute 'get'
====================

Dabei scheint auch die JSON-Body-Länge nicht ganz richtig gezählt zu werden, in
dem anghängten Skript musste die Länge des JSON-Strings um 1 erhöht werden,
damit das letzte Zeichen nicht abgeschnitte wird.
Comment 1 Andreas Büsching univentionstaff 2011-12-28 15:32:43 CET
Das Problem lag in der Behandlung von anderen MIME und beim Zurückschicken des Response auf einen defekten Request.

(In reply to comment #0)
> Dabei scheint auch die JSON-Body-Länge nicht ganz richtig gezählt zu werden, in
> dem anghängten Skript musste die Länge des JSON-Strings um 1 erhöht werden,
> damit das letzte Zeichen nicht abgeschnitte wird.

Das Skript hängt eine Leerzeile an den Body durch das echo ohen die Option -n. Daher ist das +1 notwendig.
Comment 2 Jascha Geerds univentionstaff 2012-02-24 12:50:59 CET
Der Bug wurde gefixed; Changelog vorhanden.
Comment 3 Sönke Schwardt-Krummrich univentionstaff 2012-03-04 14:34:18 CET
UCS 3.0-1 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer
neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert
werden: "Clone This Bug"