s3-smbd provide struct smbd_server_connection * to conn_snum_used
[nivanova/samba-autobuild/.git] / source3 / smbd / lanman.c
index 02ef033879d7dddd264ec686dd5e97daf603a251..5958bb9746da1f8ee19c58b48dca3f0ce1ea4577 100644 (file)
    */
 
 #include "includes.h"
+#include "smbd/smbd.h"
 #include "smbd/globals.h"
+#include "rpc_client/rpc_client.h"
 #include "../librpc/gen_ndr/ndr_samr_c.h"
 #include "../librpc/gen_ndr/ndr_spoolss_c.h"
 #include "rpc_client/cli_spoolss.h"
 #include "rpc_client/init_spoolss.h"
 #include "../librpc/gen_ndr/ndr_srvsvc_c.h"
-#include "../librpc/gen_ndr/srv_samr.h"
-#include "../librpc/gen_ndr/srv_srvsvc.h"
 #include "../librpc/gen_ndr/rap.h"
 #include "../lib/util/binsearch.h"
 #include "../libcli/auth/libcli_auth.h"
 #include "rpc_client/init_lsa.h"
-#include "rpc_server/rpc_ncacn_np.h"
 #include "../libcli/security/security.h"
 #include "printing.h"
+#include "passdb/machine_sid.h"
+#include "auth.h"
+#include "rpc_server/rpc_ncacn_np.h"
 
 #ifdef CHECK_TYPES
 #undef CHECK_TYPES
@@ -610,9 +612,9 @@ static void fill_printq_info_52(struct spoolss_DriverInfo3 *driver,
 {
        int                             i;
        fstring                         location;
-       trim_string((char *)driver->driver_path, "\\print$\\WIN40\\0\\", 0);
-       trim_string((char *)driver->data_file, "\\print$\\WIN40\\0\\", 0);
-       trim_string((char *)driver->help_file, "\\print$\\WIN40\\0\\", 0);
+       trim_string(discard_const_p(char, driver->driver_path), "\\print$\\WIN40\\0\\", 0);
+       trim_string(discard_const_p(char, driver->data_file), "\\print$\\WIN40\\0\\", 0);
+       trim_string(discard_const_p(char, driver->help_file), "\\print$\\WIN40\\0\\", 0);
 
        PACKI(desc, "W", 0x0400);                     /* don't know */
        PACKS(desc, "z", driver->driver_name);        /* long printer name */
@@ -639,7 +641,7 @@ static void fill_printq_info_52(struct spoolss_DriverInfo3 *driver,
 
        for ( i=0; i<count && driver->dependent_files && *driver->dependent_files[i]; i++)
        {
-               trim_string((char *)driver->dependent_files[i], "\\print$\\WIN40\\0\\", 0);
+               trim_string(discard_const_p(char, driver->dependent_files[i]), "\\print$\\WIN40\\0\\", 0);
                PACKS(desc,"z",driver->dependent_files[i]);         /* driver files to copy */
                DEBUG(3,("Dependent File: %s:\n", driver->dependent_files[i]));
        }
@@ -1145,9 +1147,7 @@ static bool api_DosPrintQEnum(struct smbd_server_connection *sconn,
                subcntarr[i] = num_jobs;
                subcnt += subcntarr[i];
 
-               if (b && is_valid_policy_hnd(&handle)) {
-                       dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &werr);
-               }
+               dcerpc_spoolss_ClosePrinter(b, mem_ctx, &handle, &werr);
        }
 
        if (init_package(&desc,queuecnt,subcnt)) {
@@ -1427,7 +1427,7 @@ static int fill_srv_info(struct srv_info_struct *service,
 
 static int srv_comp(struct srv_info_struct *s1,struct srv_info_struct *s2)
 {
-       return StrCaseCmp(s1->name,s2->name);
+       return strcasecmp_m(s1->name,s2->name);
 }
 
 /****************************************************************************
@@ -1596,7 +1596,7 @@ static int srv_name_match(const char *n1, const char *n2)
         *  the server will return a list of servers that exist on
         *  the network greater than or equal to the FirstNameToReturn.
         */
-       int ret = StrCaseCmp(n1, n2);
+       int ret = strcasecmp_m(n1, n2);
 
        if (ret <= 0) {
                return 0;
@@ -1708,7 +1708,7 @@ static bool api_RNetServerEnum3(struct smbd_server_connection *sconn,
                         */
                        for (;first > 0;) {
                                int ret;
-                               ret = StrCaseCmp(first_name,
+                               ret = strcasecmp_m(first_name,
                                                 servers[first-1].name);
                                if (ret > 0) {
                                        break;
@@ -2005,7 +2005,7 @@ static bool api_RNetShareGetInfo(struct smbd_server_connection *sconn,
        int uLevel = get_safe_SVAL(param,tpscnt,p,0,-1);
        int snum;
 
-       if (!str1 || !str2 || !netname || !p) {
+       if (!str1 || !str2 || !netname_in || !p) {
                return False;
        }
 
@@ -2092,7 +2092,7 @@ static bool api_RNetShareEnum(struct smbd_server_connection *sconn,
        /* Ensure all the usershares are loaded. */
        become_root();
        load_registry_shares();
-       count = load_usershare_shares();
+       count = load_usershare_shares(sconn);
        unbecome_root();
 
        data_len = fixed_len = string_len = 0;
@@ -2254,7 +2254,7 @@ static bool api_RNetShareAdd(struct smbd_server_connection *sconn,
                return false;
        }
 
-       status = rpc_pipe_open_internal(mem_ctx, &ndr_table_srvsvc.syntax_id,
+       status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc.syntax_id,
                                        conn->session_info,
                                        &conn->sconn->client_id,
                                        conn->sconn->msg_ctx,
@@ -2365,7 +2365,7 @@ static bool api_RNetGroupEnum(struct smbd_server_connection *sconn,
                return False;
        }
 
-       status = rpc_pipe_open_internal(
+       status = rpc_pipe_open_interface(
                talloc_tos(), &ndr_table_samr.syntax_id,
                conn->session_info, &conn->sconn->client_id,
                conn->sconn->msg_ctx, &samr_pipe);
@@ -2571,7 +2571,7 @@ static bool api_NetUserGetGroups(struct smbd_server_connection *sconn,
        p = *rdata;
        endp = *rdata + *rdata_len;
 
-       status = rpc_pipe_open_internal(
+       status = rpc_pipe_open_interface(
                talloc_tos(), &ndr_table_samr.syntax_id,
                conn->session_info, &conn->sconn->client_id,
                conn->sconn->msg_ctx, &samr_pipe);
@@ -2763,7 +2763,7 @@ static bool api_RNetUserEnum(struct smbd_server_connection *sconn,
        p = *rdata;
        endp = *rdata + *rdata_len;
 
-       status = rpc_pipe_open_internal(
+       status = rpc_pipe_open_interface(
                talloc_tos(), &ndr_table_samr.syntax_id,
                conn->session_info, &conn->sconn->client_id,
                conn->sconn->msg_ctx, &samr_pipe);
@@ -3029,7 +3029,7 @@ static bool api_SetUserPassword(struct smbd_server_connection *sconn,
        ZERO_STRUCT(domain_handle);
        ZERO_STRUCT(user_handle);
 
-       status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
+       status = rpc_pipe_open_interface(mem_ctx, &ndr_table_samr.syntax_id,
                                        conn->session_info,
                                        &conn->sconn->client_id,
                                        conn->sconn->msg_ctx,
@@ -3280,7 +3280,7 @@ static bool api_SamOEMChangePassword(struct smbd_server_connection *sconn,
        memcpy(password.data, data, 516);
        memcpy(hash.hash, data+516, 16);
 
-       status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
+       status = rpc_pipe_open_interface(mem_ctx, &ndr_table_samr.syntax_id,
                                        conn->session_info,
                                        &conn->sconn->client_id,
                                        conn->sconn->msg_ctx,
@@ -3864,7 +3864,7 @@ static bool api_RNetServerGetInfo(struct smbd_server_connection *sconn,
        p = *rdata;
        p2 = p + struct_len;
 
-       status = rpc_pipe_open_internal(mem_ctx, &ndr_table_srvsvc.syntax_id,
+       status = rpc_pipe_open_interface(mem_ctx, &ndr_table_srvsvc.syntax_id,
                                        conn->session_info,
                                        &conn->sconn->client_id,
                                        conn->sconn->msg_ctx,
@@ -4291,7 +4291,7 @@ static bool api_RNetUserGetInfo(struct smbd_server_connection *sconn,
        ZERO_STRUCT(domain_handle);
        ZERO_STRUCT(user_handle);
 
-       status = rpc_pipe_open_internal(mem_ctx, &ndr_table_samr.syntax_id,
+       status = rpc_pipe_open_interface(mem_ctx, &ndr_table_samr.syntax_id,
                                        conn->session_info,
                                        &conn->sconn->client_id,
                                        conn->sconn->msg_ctx,
@@ -5667,7 +5667,7 @@ static bool api_RNetSessionEnum(struct smbd_server_connection *sconn,
                PACKS(&desc, "z", info_ctr.ctr.ctr1->array[i].client);
                PACKS(&desc, "z", info_ctr.ctr.ctr1->array[i].user);
                PACKI(&desc, "W", 1); /* num conns */
-               PACKI(&desc, "W", 0); /* num opens */
+               PACKI(&desc, "W", info_ctr.ctr.ctr1->array[i].num_open);
                PACKI(&desc, "W", 1); /* num users */
                PACKI(&desc, "D", 0); /* session time */
                PACKI(&desc, "D", 0); /* idle time */