form.getField('modp').getOptions() is dangerous
problem
form.getField('modp').getOptions()
is really dangerous and should never be used if getField(…)
doesn’t always return the object wanted. It should only be used in a try block. --Link Mauve
analysis
The following trackbacks are realizations. They were originally sent as a Bug report by henk in regard to another matter.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/nbxmpp/idlequeue.py", line 534, in _process_events
return IdleQueue._process_events(self, fd, flags)
File "/usr/lib/python2.7/dist-packages/nbxmpp/idlequeue.py", line 395, in _process_events
obj.pollin()
File "/usr/lib/python2.7/dist-packages/nbxmpp/transports_nb.py", line 423, in pollin
self._do_receive()
File "/usr/lib/python2.7/dist-packages/nbxmpp/transports_nb.py", line 609, in _do_receive
self._on_receive(received)
File "/usr/lib/python2.7/dist-packages/nbxmpp/transports_nb.py", line 623, in _on_receive
self.on_receive(data)
File "/usr/lib/python2.7/dist-packages/nbxmpp/dispatcher_nb.py", line 488, in dispatch
handler['func'](session, stanza)
File "/usr/share/gajim/src/common/connection_handlers.py", line 1864, in _messageCB
conn=self, stanza=msg, account=self.name))
File "/usr/share/gajim/src/common/nec.py", line 76, in push_incoming_event
self._generate_events_based_on_incoming_event(event_object)
File "/usr/share/gajim/src/common/nec.py", line 98, in _generate_events_based_on_incoming_event
if new_event_object.generate():
File "/usr/share/gajim/src/common/connection_handlers_events.py", line 1138, in generate
self.session.handle_negotiation(form)
File "/usr/share/gajim/src/session.py", line 419, in handle_negotiation
self.respond_e2e_bob(form, negotiated, not_acceptable)
File "/usr/share/gajim/src/common/stanza_session.py", line 813, in respond_e2e_bob
self.modp = int(form.getField('modp').getOptions()[group_order][1])
AttributeError: 'NoneType' object has no attribute 'getOptions'
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/nbxmpp/idlequeue.py", line 534, in _process_events
return IdleQueue._process_events(self, fd, flags)
File "/usr/lib/python2.7/dist-packages/nbxmpp/idlequeue.py", line 395, in _process_events
obj.pollin()
File "/usr/lib/python2.7/dist-packages/nbxmpp/transports_nb.py", line 423, in pollin
self._do_receive()
File "/usr/lib/python2.7/dist-packages/nbxmpp/transports_nb.py", line 609, in _do_receive
self._on_receive(received)
File "/usr/lib/python2.7/dist-packages/nbxmpp/transports_nb.py", line 623, in _on_receive
self.on_receive(data)
File "/usr/lib/python2.7/dist-packages/nbxmpp/dispatcher_nb.py", line 488, in dispatch
handler['func'](session, stanza)
File "/usr/share/gajim/src/common/connection_handlers.py", line 1864, in _messageCB
conn=self, stanza=msg, account=self.name))
File "/usr/share/gajim/src/common/nec.py", line 76, in push_incoming_event
self._generate_events_based_on_incoming_event(event_object)
File "/usr/share/gajim/src/common/nec.py", line 98, in _generate_events_based_on_incoming_event
if new_event_object.generate():
File "/usr/share/gajim/src/common/connection_handlers_events.py", line 1138, in generate
self.session.handle_negotiation(form)
File "/usr/share/gajim/src/session.py", line 419, in handle_negotiation
self.respond_e2e_bob(form, negotiated, not_acceptable)
File "/usr/share/gajim/src/common/stanza_session.py", line 813, in respond_e2e_bob
self.modp = int(form.getField('modp').getOptions()[group_order][1])
AttributeError: 'NoneType' object has no attribute 'getOptions'
software versions
OS version: debian unstable GTK version: 2.24.21 PyGTK version: 2.24.0