nm-manager: ensure device is exported on D-Bus in authentication request
The device authentication request is an async process, it can not know the answer right away, it is not guarantee that device is still exported on D-Bus when authentication finishes. Thus, do not return SUCCESS and abort the authentication request when device is not alive. https://bugzilla.redhat.com/show_bug.cgi?id=2210271
This commit is contained in:
@@ -3222,6 +3222,13 @@ device_auth_done_cb(NMAuthChain *chain, GDBusMethodInvocation *context, gpointer
|
|||||||
nm_assert(error || (result == NM_AUTH_CALL_RESULT_YES));
|
nm_assert(error || (result == NM_AUTH_CALL_RESULT_YES));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!error && !nm_dbus_object_is_exported(NM_DBUS_OBJECT(device))) {
|
||||||
|
g_set_error(&error,
|
||||||
|
NM_MANAGER_ERROR,
|
||||||
|
NM_MANAGER_ERROR_UNKNOWN_DEVICE,
|
||||||
|
"device no longer exists");
|
||||||
|
}
|
||||||
|
|
||||||
callback(device, context, subject, error, nm_auth_chain_get_data(chain, "user-data"));
|
callback(device, context, subject, error, nm_auth_chain_get_data(chain, "user-data"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3287,6 +3294,14 @@ nm_manager_device_auth_request(NMManager *self,
|
|||||||
&error))
|
&error))
|
||||||
goto fail_on_idle;
|
goto fail_on_idle;
|
||||||
|
|
||||||
|
if (!nm_dbus_object_is_exported(NM_DBUS_OBJECT(device))) {
|
||||||
|
g_set_error(&error,
|
||||||
|
NM_MANAGER_ERROR,
|
||||||
|
NM_MANAGER_ERROR_UNKNOWN_DEVICE,
|
||||||
|
"device no longer exists");
|
||||||
|
goto fail_on_idle;
|
||||||
|
}
|
||||||
|
|
||||||
chain = nm_auth_chain_new_subject(subject, context, device_auth_done_cb, self);
|
chain = nm_auth_chain_new_subject(subject, context, device_auth_done_cb, self);
|
||||||
if (cancellable)
|
if (cancellable)
|
||||||
nm_auth_chain_set_cancellable(chain, cancellable);
|
nm_auth_chain_set_cancellable(chain, cancellable);
|
||||||
|
Reference in New Issue
Block a user