s4:rpc_server/srvsvc: make use dcesrv_call_session_info()
[samba.git] / source4 / rpc_server / srvsvc / srvsvc_ntvfs.c
index 49beb50d869d5e053b59542b29bfd5325806419d..fe97d60d999b4f518e19934a96fecb324a9f32fe 100644 (file)
@@ -39,13 +39,15 @@ NTSTATUS srvsvc_create_ntvfs_context(struct dcesrv_call_state *dce_call,
                                     const char *share,
                                     struct ntvfs_context **_ntvfs)
 {
+       struct auth_session_info *session_info =
+               dcesrv_call_session_info(dce_call);
        NTSTATUS status;
        struct srvsvc_ntvfs_ctx *c;
        struct ntvfs_request *ntvfs_req;
        enum ntvfs_type type;
        struct share_context *sctx;
        struct share_config *scfg;
-       const char *sharetype;
+       char *sharetype;
        union smb_tcon tcon;
        const struct tsocket_address *local_address;
        const struct tsocket_address *remote_address;
@@ -71,7 +73,7 @@ NTSTATUS srvsvc_create_ntvfs_context(struct dcesrv_call_state *dce_call,
 #endif
 
        /* work out what sort of connection this is */
-       sharetype = share_string_option(scfg, SHARE_TYPE, SHARE_TYPE_DEFAULT);
+       sharetype = share_string_option(mem_ctx, scfg, SHARE_TYPE, SHARE_TYPE_DEFAULT);
        if (sharetype && strcmp(sharetype, "IPC") == 0) {
                type = NTVFS_IPC;
        } else if (sharetype && strcmp(sharetype, "PRINTER")) {
@@ -80,6 +82,8 @@ NTSTATUS srvsvc_create_ntvfs_context(struct dcesrv_call_state *dce_call,
                type = NTVFS_DISK;
        }
 
+       TALLOC_FREE(sharetype);
+
        c = talloc(mem_ctx, struct srvsvc_ntvfs_ctx);
        NT_STATUS_HAVE_NO_MEMORY(c);
        
@@ -111,7 +115,7 @@ NTSTATUS srvsvc_create_ntvfs_context(struct dcesrv_call_state *dce_call,
        }
 
        ntvfs_req = ntvfs_request_create(c->ntvfs, mem_ctx,
-                                        dce_call->conn->auth_state.session_info,
+                                        session_info,
                                         0, /* TODO: fill in PID */
                                         dce_call->time,
                                         NULL, NULL, 0);