dbus_new_handlers: Don't send NULL to dbus_message_new_error
The new DBus API helper function wpas_dbus_error_unknown_error function can be called as a result of a failure within internal getter calls, which will call this function with a NULL message parameter. However, dbus_message_new_error looks very unkindly (i.e, abort()) on a NULL message, so in this case, we should not call it. I've observed this course of events during a call to wpas_dbus_getter_bss_wpa with a faileld parse of the IE parameter. We got here through a call to fill_dict_with_properties which explicitly calls getters with a NULL message parameter. Judging from the way it is called, this could easily occur if an AP sends out a malformed (or mis-received) probe response. I usually run into this problem while driving through San Francisco, so I'm exposed to any number of base stations along this path.
This commit is contained in:
parent
556522ee09
commit
8ee69e0633
1 changed files with 14 additions and 0 deletions
|
@ -117,6 +117,20 @@ static char * wpas_dbus_new_decompose_object_path(const char *path,
|
|||
DBusMessage * wpas_dbus_error_unknown_error(DBusMessage *message,
|
||||
const char *arg)
|
||||
{
|
||||
/*
|
||||
* This function can be called as a result of a failure
|
||||
* within internal getter calls, which will call this function
|
||||
* with a NULL message parameter. However, dbus_message_new_error
|
||||
* looks very unkindly (i.e, abort()) on a NULL message, so
|
||||
* in this case, we should not call it.
|
||||
*/
|
||||
if (message == NULL) {
|
||||
wpa_printf(MSG_INFO, "dbus: wpas_dbus_error_unknown_error "
|
||||
"called with NULL message (arg=%s)",
|
||||
arg ? arg : "N/A");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return dbus_message_new_error(message, WPAS_DBUS_ERROR_UNKNOWN_ERROR,
|
||||
arg);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue