]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Fix SRVSVC ShareInfo level 502 server side handling.
authorGünther Deschner <gd@samba.org>
Mon, 31 Mar 2008 22:02:48 +0000 (00:02 +0200)
committerGünther Deschner <gd@samba.org>
Mon, 31 Mar 2008 22:26:32 +0000 (00:26 +0200)
Guenther

source/rpc_client/init_srvsvc.c
source/rpc_server/srv_srvsvc_nt.c

index 4fa260c2c595504eff68dc5b67fdb7b289854683..24beb1ace2374a2e71f77aa15210a0a788b0662b 100644 (file)
@@ -162,8 +162,7 @@ void init_srvsvc_NetShareInfo502(struct srvsvc_NetShareInfo502 *r,
                                 uint32_t current_users,
                                 const char *path,
                                 const char *password,
-                                uint32_t unknown,
-                                struct security_descriptor *sd)
+                                struct sec_desc_buf *sd_buf)
 {
        r->name = name;
        r->type = type;
@@ -173,8 +172,7 @@ void init_srvsvc_NetShareInfo502(struct srvsvc_NetShareInfo502 *r,
        r->current_users = current_users;
        r->path = path;
        r->password = password;
-       r->unknown = unknown;
-       r->sd = sd;
+       r->sd_buf = *sd_buf;
 }
 
 /*******************************************************************
index 57b42af4e5dc5d75c2e020a61557d45d38325c11..7188360f69747e315747c72a1e8205819bde5ea3 100644 (file)
@@ -379,6 +379,7 @@ static void init_srv_share_info_502(pipes_struct *p, struct srvsvc_NetShareInfo5
        const char *net_name = lp_servicename(snum);
        char *path = NULL;
        SEC_DESC *sd = NULL;
+       struct sec_desc_buf *sd_buf = NULL;
        size_t sd_size = 0;
        TALLOC_CTX *ctx = p->mem_ctx;
        char *remark = talloc_strdup(ctx, lp_comment(snum));;
@@ -397,6 +398,8 @@ static void init_srv_share_info_502(pipes_struct *p, struct srvsvc_NetShareInfo5
 
        sd = get_share_security(ctx, lp_servicename(snum), &sd_size);
 
+       sd_buf = make_sec_desc_buf(p->mem_ctx, sd_size, sd);
+
        init_srvsvc_NetShareInfo502(r, net_name,
                                    get_share_type(snum),
                                    remark ? remark : "",
@@ -405,8 +408,7 @@ static void init_srv_share_info_502(pipes_struct *p, struct srvsvc_NetShareInfo5
                                    1,
                                    path ? path : "",
                                    "",
-                                   0,
-                                   sd);
+                                   sd_buf);
 }
 
 /***************************************************************************
@@ -1541,7 +1543,7 @@ WERROR _srvsvc_NetShareSetInfo(pipes_struct *p,
                comment = talloc_strdup(ctx, info->info502->comment);
                pathname = info->info502->path;
                type = info->info502->type;
-               psd = info->info502->sd;
+               psd = info->info502->sd_buf.sd;
                map_generic_share_sd_bits(psd);
                break;
        case 1004:
@@ -1734,7 +1736,7 @@ WERROR _srvsvc_NetShareAdd(pipes_struct *p,
                max_connections = (r->in.info->info502->max_users == (uint32_t)-1) ?
                        0 : r->in.info->info502->max_users;
                type = r->in.info->info502->type;
-               psd = r->in.info->info502->sd;
+               psd = r->in.info->info502->sd_buf.sd;
                map_generic_share_sd_bits(psd);
                break;