winbindd: winbindd_ccache_ntlm_auth() -> bool_dispatch_table
[samba.git] / source3 / winbindd / winbindd_ccache_access.c
index 6bcf9a3552cbb6b6a7919132ac2b22bf00de2eea..7b558660cc9072586664ee842dad65cb1523b24b 100644 (file)
@@ -180,7 +180,7 @@ static bool check_client_uid(struct winbindd_cli_state *state, uid_t uid)
        return True;
 }
 
-void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state)
+bool winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state)
 {
        struct winbindd_domain *domain;
        fstring name_namespace, name_domain, name_user;
@@ -199,12 +199,14 @@ void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state)
 
        /* Parse domain and username */
 
-       if (!canonicalize_username(state->request->data.ccache_ntlm_auth.user,
-                               name_domain, name_user)) {
+       ok = canonicalize_username(state->request->data.ccache_ntlm_auth.user,
+                                  name_namespace,
+                                  name_domain,
+                                  name_user);
+       if (!ok) {
                DEBUG(5,("winbindd_ccache_ntlm_auth: cannot parse domain and user from name [%s]\n",
                        state->request->data.ccache_ntlm_auth.user));
-               request_error(state);
-               return;
+               return false;
        }
 
        domain = find_auth_domain(state->request->flags, name_domain);
@@ -212,13 +214,11 @@ void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state)
        if (domain == NULL) {
                DEBUG(5,("winbindd_ccache_ntlm_auth: can't get domain [%s]\n",
                        name_domain));
-               request_error(state);
-               return;
+               return false;
        }
 
        if (!check_client_uid(state, state->request->data.ccache_ntlm_auth.uid)) {
-               request_error(state);
-               return;
+               return false;
        }
 
        /* validate blob lengths */
@@ -306,18 +306,15 @@ void winbindd_ccache_ntlm_auth(struct winbindd_cli_state *state)
        data_blob_free(&auth);
 
   process_result:
-       if (!NT_STATUS_IS_OK(result)) {
-               request_error(state);
-               return;
-       }
-       request_ok(state);
+       return NT_STATUS_IS_OK(result);
 }
 
 void winbindd_ccache_save(struct winbindd_cli_state *state)
 {
        struct winbindd_domain *domain;
-       fstring name_domain, name_user;
+       fstring name_namespace, name_domain, name_user;
        NTSTATUS status;
+       bool ok;
 
        /* Ensure null termination */
        state->request->data.ccache_save.user[
@@ -331,8 +328,11 @@ void winbindd_ccache_save(struct winbindd_cli_state *state)
 
        /* Parse domain and username */
 
-       if (!canonicalize_username(state->request->data.ccache_save.user,
-                                  name_domain, name_user)) {
+       ok = canonicalize_username(state->request->data.ccache_save.user,
+                                  name_namespace,
+                                  name_domain,
+                                  name_user);
+       if (!ok) {
                DEBUG(5,("winbindd_ccache_save: cannot parse domain and user "
                         "from name [%s]\n",
                         state->request->data.ccache_save.user));