Fix handling of case where notification decode failure occurs

I'm not sure whether this case can happen in the wild, but if
artifically exercising the condition, I noticed it behaves
poorly. Specifically:

* The error_name parameter must be a valid D-Bus error name. It seems
  conventional to set this to "org.freedesktop.Notifications.Error".
  Without this change, the following error is thrown:

  CRITICAL: g_dbus_method_invocation_return_dbus_error: assertion 'error_name != NULL && g_dbus_is_name (error_name)' failed

* Previously execution would continue even though the notification did
  not decode, causing essentially a null pointer exception later.
  Adds a return for this case.

* With those two things fixed, this case seems relatively silent -
  "notify-send" invocations succeed even if the condition for the if
  is "true". So, I added a warning log to indicate that this case is
  occurring
This commit is contained in:
Michael Sloan 2019-01-13 01:14:40 -08:00
parent 5627d06070
commit dd54709b9e

View File

@ -301,10 +301,12 @@ static void dbus_cb_Notify(
{
struct notification *n = dbus_message_to_notification(sender, parameters);
if (!n) {
LOG_W("A notification failed to decode.");
g_dbus_method_invocation_return_dbus_error(
invocation,
"Cannot decode notification!",
"");
FDN_IFAC".Error",
"Cannot decode notification!");
return;
}
int id = queues_notification_insert(n);