Skip to content
Permalink
Branch: master
Commits on Jun 14, 2018
  1. gfdonotificationbackend: hold a strong ref on backend

    elboulangero committed Jun 14, 2018
    This is to avoid race between dispose() being called on the
    GFdoNotificationBackend instance, and any pending operations which are
    still waiting on a D-Bus reply when it’s disposed.
    
    (thx to Philip Withnall for pointing that out)
    
    Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
Commits on Jun 13, 2018
  1. gfdonotificationbackend: Fix possible invalid pointer in dbus callback

    elboulangero committed Jun 10, 2018
    The way things were before: a FreedesktopNotification struct is
    allocated before the dbus call, and this same struct is possibly re-used
    for other dbus calls. If the server becomes unavailable, the callback
    will be invoked after the call times out, which leaves a long time where
    other dbus calls can happen, re-using the same FreedesktopNotification
    as user data. When the first call times out, the callback is invoked,
    and the user data is freed. Subsequent calls that used the same user
    data will time out later on, and try to free a pointer that was already
    freed, hence segfaults.
    
    This bug can be reproduced in Cinnamon 3.6.7, as mentioned in:
    <linuxmint/cinnamon#7491>
    
    This commit fixes that by always allocating a new
    FreedesktopNotification before invoking dbus_call(), ensuring that the
    callback always have a valid user data.
    
    Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.