s3: rpc_server/srvsvc: use find_sessions() in NetSessDel
authorShekhar Amlekar <samlekar@in.ibm.com>
Mon, 3 Jun 2013 07:32:19 +0000 (13:02 +0530)
committerJeremy Allison <jra@samba.org>
Tue, 10 Sep 2013 18:32:50 +0000 (11:32 -0700)
instead of using list_sessions(), use find_sessions() that
builds the list of only the sessions of interest.

Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/rpc_server/srvsvc/srv_srvsvc_nt.c

index 8f3a4cf17d0846809c6fe0db59966e7164044c14..3d4ee22ea1aa7ce4db0a4667a04d449ceee3064b 100644 (file)
@@ -1296,30 +1296,27 @@ WERROR _srvsvc_NetSessDel(struct pipes_struct *p,
                machine += 2;
        }
 
-       num_sessions = list_sessions(p->mem_ctx, &session_list);
+       num_sessions = find_sessions(p->mem_ctx, username, machine,
+                                    &session_list);
 
        for (snum = 0; snum < num_sessions; snum++) {
 
-               if ((strequal(session_list[snum].username, username) || username[0] == '\0' ) &&
-                   strequal(session_list[snum].remote_machine, machine)) {
+               NTSTATUS ntstat;
 
-                       NTSTATUS ntstat;
-
-                       if (p->session_info->unix_token->uid != sec_initial_uid()) {
-                               not_root = True;
-                               become_root();
-                       }
+               if (p->session_info->unix_token->uid != sec_initial_uid()) {
+                       not_root = True;
+                       become_root();
+               }
 
-                       ntstat = messaging_send(p->msg_ctx,
-                                               session_list[snum].pid,
-                                               MSG_SHUTDOWN, &data_blob_null);
+               ntstat = messaging_send(p->msg_ctx,
+                                       session_list[snum].pid,
+                                       MSG_SHUTDOWN, &data_blob_null);
 
-                       if (NT_STATUS_IS_OK(ntstat))
-                               werr = WERR_OK;
+               if (NT_STATUS_IS_OK(ntstat))
+                       werr = WERR_OK;
 
-                       if (not_root)
-                               unbecome_root();
-               }
+               if (not_root)
+                       unbecome_root();
        }
 
        DEBUG(5,("_srvsvc_NetSessDel: %d\n", __LINE__));