From bac1bf4f3e8fd1efadcb421676ef86fbdabbcd77 Mon Sep 17 00:00:00 2001 From: Gerald Carter Date: Tue, 21 Nov 2006 04:36:22 +0000 Subject: [PATCH] r19813: smbd now compiles again --- source/lib/substitute.c | 18 ++++++++++++++ source/libsmb/clikrb5.c | 21 ----------------- source/rpc_server/srv_spoolss_nt.c | 4 +++- source/rpc_server/srv_srvsvc_nt.c | 48 +++++++++++++++++++------------------- 4 files changed, 45 insertions(+), 46 deletions(-) diff --git a/source/lib/substitute.c b/source/lib/substitute.c index 25a6a2c4c82..4c81bd8444e 100644 --- a/source/lib/substitute.c +++ b/source/lib/substitute.c @@ -769,3 +769,21 @@ void standard_sub_advanced(const char *servicename, const char *user, SAFE_FREE( s ); } } + +/**************************************************************************** + * Do some standard substitutions in a string. + * ****************************************************************************/ + +void standard_sub_conn(connection_struct *conn, char *str, size_t len) +{ + char *s; + + s = alloc_sub_advanced(lp_servicename(SNUM(conn)), conn->user, conn->connectpath, + conn->gid, smb_user_name, "", str); + + if ( s ) { + strncpy( str, s, len ); + SAFE_FREE( s ); + } +} + diff --git a/source/libsmb/clikrb5.c b/source/libsmb/clikrb5.c index 14b5285e45a..485f5abc0a8 100644 --- a/source/libsmb/clikrb5.c +++ b/source/libsmb/clikrb5.c @@ -852,27 +852,6 @@ failed: #endif } -static int get_kvno_from_ap_req(krb5_ap_req *ap_req) -{ -#ifdef HAVE_TICKET_POINTER_IN_KRB5_AP_REQ /* MIT */ - if (ap_req->ticket->enc_part.kvno) - return ap_req->ticket->enc_part.kvno; -#else /* Heimdal */ - if (ap_req->ticket.enc_part.kvno) - return *ap_req->ticket.enc_part.kvno; -#endif - return 0; -} - -static krb5_enctype get_enctype_from_ap_req(krb5_ap_req *ap_req) -{ -#ifdef HAVE_ETYPE_IN_ENCRYPTEDDATA /* Heimdal */ - return ap_req->ticket.enc_part.etype; -#else /* MIT */ - return ap_req->ticket->enc_part.enctype; -#endif -} - static krb5_error_code get_key_from_keytab(krb5_context context, krb5_const_principal server, diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index fda6f230750..be493c674df 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -6029,7 +6029,9 @@ BOOL add_printer_hook(NT_USER_TOKEN *token, NT_PRINTER_INFO_LEVEL *printer) SE_PRIV se_printop = SE_PRINT_OPERATOR; BOOL is_print_op = False; - standard_sub_basic(current_user_info.smb_name, remote_machine,sizeof(remote_machine)); + standard_sub_basic(current_user_info.smb_name, + current_user_info.domain, + remote_machine,sizeof(remote_machine)); slprintf(command, sizeof(command)-1, "%s \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"", cmd, printer->info_2->printername, printer->info_2->sharename, diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c index e2562506975..6d7ec7c4ee9 100644 --- a/source/rpc_server/srv_srvsvc_nt.c +++ b/source/rpc_server/srv_srvsvc_nt.c @@ -184,7 +184,7 @@ static void init_srv_share_info_502(pipes_struct *p, SRV_SHARE_INFO_502 *sh502, pstrcpy(passwd, ""); - sd = get_share_security(ctx, snum, &sd_size); + sd = get_share_security(ctx, lp_servicename(snum), &sd_size); init_srv_share_info502(&sh502->info_502, net_name, get_share_type(snum), remark, 0, 0xffffffff, 1, path, passwd, sd, sd_size); init_srv_share_info502_str(&sh502->info_502_str, net_name, remark, path, passwd, sd, sd_size); @@ -257,7 +257,7 @@ static void init_srv_share_info_1501(pipes_struct *p, SRV_SHARE_INFO_1501 *sh150 ZERO_STRUCTP(sh1501); - sd = get_share_security(ctx, snum, &sd_size); + sd = get_share_security(ctx, lp_servicename(snum), &sd_size); sh1501->sdb = make_sec_desc_buf(p->mem_ctx, sd_size, sd); } @@ -1469,10 +1469,10 @@ WERROR _srv_net_share_set_info(pipes_struct *p, SRV_Q_NET_SHARE_SET_INFO *q_u, S SEC_DESC *old_sd; size_t sd_size; - old_sd = get_share_security(p->mem_ctx, snum, &sd_size); + old_sd = get_share_security(p->mem_ctx, lp_servicename(snum), &sd_size); if (old_sd && !sec_desc_equal(old_sd, psd)) { - if (!set_share_security(p->mem_ctx, share_name, psd)) + if (!set_share_security(share_name, psd)) DEBUG(0,("_srv_net_share_set_info: Failed to change security info in share %s.\n", share_name )); } @@ -1624,7 +1624,7 @@ WERROR _srv_net_share_add(pipes_struct *p, SRV_Q_NET_SHARE_ADD *q_u, SRV_R_NET_S return WERR_ACCESS_DENIED; if (psd) { - if (!set_share_security(p->mem_ctx, share_name, psd)) { + if (!set_share_security(share_name, psd)) { DEBUG(0,("_srv_net_share_add: Failed to add security info to share %s.\n", share_name )); } } @@ -1654,6 +1654,7 @@ WERROR _srv_net_share_del(pipes_struct *p, SRV_Q_NET_SHARE_DEL *q_u, SRV_R_NET_S int snum; SE_PRIV se_diskop = SE_DISK_OPERATOR; BOOL is_disk_op; + struct share_params *params; DEBUG(5,("_srv_net_share_del: %d\n", __LINE__)); @@ -1666,11 +1667,10 @@ WERROR _srv_net_share_del(pipes_struct *p, SRV_Q_NET_SHARE_DEL *q_u, SRV_R_NET_S return WERR_ACCESS_DENIED; } - snum = find_service(share_name); - - if (snum < 0) - return WERR_NO_SUCH_SHARE; - + if (!(params = get_share_params(p->mem_ctx, share_name))) { + return WERR_NO_SUCH_SHARE; + } + /* No change to printer shares. */ if (lp_print_ok(snum)) return WERR_ACCESS_DENIED; @@ -1713,9 +1713,9 @@ WERROR _srv_net_share_del(pipes_struct *p, SRV_Q_NET_SHARE_DEL *q_u, SRV_R_NET_S return WERR_ACCESS_DENIED; /* Delete the SD in the database. */ - delete_share_security(snum); + delete_share_security(params); - lp_killservice(snum); + lp_killservice(params->service); return WERR_OK; } @@ -1837,20 +1837,20 @@ WERROR _srv_net_file_query_secdesc(pipes_struct *p, SRV_Q_NET_FILE_QUERY_SECDESC goto error_exit; } - fsp = open_file_stat(conn, filename, &st); - if (!fsp) { + nt_status = open_file_stat(conn, filename, &st, &fsp); + if ( !NT_STATUS_IS_OK(nt_status)) { /* Perhaps it is a directory */ if (errno == EISDIR) - fsp = open_directory(conn, filename, &st, + nt_status = open_directory(conn, filename, &st, READ_CONTROL_ACCESS, FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0, - NULL); + NULL, &fsp); - if (!fsp) { + if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(3,("_srv_net_file_query_secdesc: Unable to open file %s\n", filename)); - r_u->status = WERR_ACCESS_DENIED; + r_u->status = ntstatus_to_werror(nt_status); goto error_exit; } } @@ -1953,21 +1953,21 @@ WERROR _srv_net_file_set_secdesc(pipes_struct *p, SRV_Q_NET_FILE_SET_SECDESC *q_ } - fsp = open_file_stat(conn, filename, &st); + nt_status = open_file_stat(conn, filename, &st, &fsp); - if (!fsp) { + if ( !NT_STATUS_IS_OK(nt_status) ) { /* Perhaps it is a directory */ if (errno == EISDIR) - fsp = open_directory(conn, filename, &st, + nt_status = open_directory(conn, filename, &st, FILE_READ_ATTRIBUTES, FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0, - NULL); + NULL, &fsp); - if (!fsp) { + if ( !NT_STATUS_IS_OK(nt_status) ) { DEBUG(3,("_srv_net_file_set_secdesc: Unable to open file %s\n", filename)); - r_u->status = WERR_ACCESS_DENIED; + r_u->status = ntstatus_to_werror(nt_status); goto error_exit; } } -- 2.11.4.GIT