diff options
Diffstat (limited to 'source3/rpc_server/srvsvc/srv_srvsvc_nt.c')
-rw-r--r-- | source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 445 |
1 files changed, 182 insertions, 263 deletions
diff --git a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c index b9345d6428..a6472a67ca 100644 --- a/source3/rpc_server/srvsvc/srv_srvsvc_nt.c +++ b/source3/rpc_server/srvsvc/srv_srvsvc_nt.c @@ -29,12 +29,15 @@ #include "../librpc/gen_ndr/srv_srvsvc.h" #include "../libcli/security/security.h" #include "../librpc/gen_ndr/ndr_security.h" -#include "dbwrap.h" +#include "../librpc/gen_ndr/open_files.h" +#include "dbwrap/dbwrap.h" #include "session.h" #include "../lib/util/util_pw.h" #include "smbd/smbd.h" +#include "smbd/globals.h" #include "auth.h" #include "messages.h" +#include "lib/conn_tdb.h" extern const struct generic_mapping file_generic_mapping; @@ -57,95 +60,6 @@ struct sess_file_count { int count; }; -/* Used to store pipe open records for NetFileEnum() */ - -struct pipe_open_rec { - struct server_id pid; - uid_t uid; - int pnum; - fstring name; -}; - -/**************************************************************************** - Count the entries belonging to a service in the connection db. -****************************************************************************/ - -static int pipe_enum_fn( struct db_record *rec, void *p) -{ - struct pipe_open_rec prec; - struct file_enum_count *fenum = (struct file_enum_count *)p; - struct srvsvc_NetFileInfo3 *f; - int i = fenum->ctr3->count; - char *fullpath = NULL; - const char *username; - - if (rec->value.dsize != sizeof(struct pipe_open_rec)) - return 0; - - memcpy(&prec, rec->value.dptr, sizeof(struct pipe_open_rec)); - - if ( !process_exists(prec.pid) ) { - return 0; - } - - username = uidtoname(prec.uid); - - if ((fenum->username != NULL) - && !strequal(username, fenum->username)) { - return 0; - } - - fullpath = talloc_asprintf(fenum->ctx, "\\PIPE\\%s", prec.name ); - if (!fullpath) { - return 1; - } - - f = TALLOC_REALLOC_ARRAY(fenum->ctx, fenum->ctr3->array, - struct srvsvc_NetFileInfo3, i+1); - if ( !f ) { - DEBUG(0,("conn_enum_fn: realloc failed for %d items\n", i+1)); - return 1; - } - fenum->ctr3->array = f; - - fenum->ctr3->array[i].fid = - (((uint32_t)(procid_to_pid(&prec.pid))<<16) | prec.pnum); - fenum->ctr3->array[i].permissions = - (FILE_READ_DATA|FILE_WRITE_DATA); - fenum->ctr3->array[i].num_locks = 0; - fenum->ctr3->array[i].path = fullpath; - fenum->ctr3->array[i].user = username; - - fenum->ctr3->count++; - - return 0; -} - -/******************************************************************* -********************************************************************/ - -static WERROR net_enum_pipes(TALLOC_CTX *ctx, - const char *username, - struct srvsvc_NetFileCtr3 **ctr3, - uint32_t resume ) -{ - struct file_enum_count fenum; - - fenum.ctx = ctx; - fenum.username = username; - fenum.ctr3 = *ctr3; - - if (connections_traverse(pipe_enum_fn, &fenum) == -1) { - DEBUG(0,("net_enum_pipes: traverse of connections.tdb " - "failed\n")); - return WERR_NOMEM; - } - - *ctr3 = fenum.ctr3; - - return WERR_OK; -} - /******************************************************************* ********************************************************************/ @@ -178,7 +92,7 @@ static void enum_file_fn( const struct share_mode_entry *e, return; } - f = TALLOC_REALLOC_ARRAY(fenum->ctx, fenum->ctr3->array, + f = talloc_realloc(fenum->ctx, fenum->ctr3->array, struct srvsvc_NetFileInfo3, i+1); if ( !f ) { DEBUG(0,("conn_enum_fn: realloc failed for %d items\n", i+1)); @@ -246,18 +160,19 @@ static WERROR net_enum_files(TALLOC_CTX *ctx, /******************************************************************* Utility function to get the 'type' of a share from an snum. ********************************************************************/ -static uint32 get_share_type(int snum) +static enum srvsvc_ShareType get_share_type(int snum) { /* work out the share type */ - uint32 type = STYPE_DISKTREE; - - if (lp_print_ok(snum)) - type = STYPE_PRINTQ; - if (strequal(lp_fstype(snum), "IPC")) - type = STYPE_IPC; - if (lp_administrative_share(snum)) - type |= STYPE_HIDDEN; + enum srvsvc_ShareType type = STYPE_DISKTREE; + if (lp_print_ok(snum)) { + type = lp_administrative_share(snum) + ? STYPE_PRINTQ_HIDDEN : STYPE_PRINTQ; + } + if (strequal(lp_fstype(talloc_tos(), snum), "IPC")) { + type = lp_administrative_share(snum) + ? STYPE_IPC_HIDDEN : STYPE_IPC; + } return type; } @@ -268,7 +183,7 @@ static uint32 get_share_type(int snum) static void init_srv_share_info_0(struct pipes_struct *p, struct srvsvc_NetShareInfo0 *r, int snum) { - r->name = lp_servicename(snum); + r->name = lp_servicename(talloc_tos(), snum); } /******************************************************************* @@ -279,14 +194,14 @@ static void init_srv_share_info_1(struct pipes_struct *p, struct srvsvc_NetShareInfo1 *r, int snum) { - char *net_name = lp_servicename(snum); - char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum)); + char *net_name = lp_servicename(talloc_tos(), snum); + char *remark = lp_comment(p->mem_ctx, snum); if (remark) { remark = talloc_sub_advanced( - p->mem_ctx, lp_servicename(snum), - get_current_username(), lp_pathname(snum), - p->session_info->utok.uid, get_current_username(), + p->mem_ctx, lp_servicename(talloc_tos(), snum), + get_current_username(), lp_pathname(talloc_tos(), snum), + p->session_info->unix_token->uid, get_current_username(), "", remark); } @@ -307,18 +222,18 @@ static void init_srv_share_info_2(struct pipes_struct *p, char *path = NULL; int max_connections = lp_max_connections(snum); uint32_t max_uses = max_connections!=0 ? max_connections : (uint32_t)-1; - char *net_name = lp_servicename(snum); + char *net_name = lp_servicename(talloc_tos(), snum); - remark = talloc_strdup(p->mem_ctx, lp_comment(snum)); + remark = lp_comment(p->mem_ctx, snum); if (remark) { remark = talloc_sub_advanced( - p->mem_ctx, lp_servicename(snum), - get_current_username(), lp_pathname(snum), - p->session_info->utok.uid, get_current_username(), + p->mem_ctx, lp_servicename(talloc_tos(), snum), + get_current_username(), lp_pathname(talloc_tos(), snum), + p->session_info->unix_token->uid, get_current_username(), "", remark); } path = talloc_asprintf(p->mem_ctx, - "C:%s", lp_pathname(snum)); + "C:%s", lp_pathname(talloc_tos(), snum)); if (path) { /* @@ -372,14 +287,14 @@ static void map_generic_share_sd_bits(struct security_descriptor *psd) static void init_srv_share_info_501(struct pipes_struct *p, struct srvsvc_NetShareInfo501 *r, int snum) { - const char *net_name = lp_servicename(snum); - char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum)); + const char *net_name = lp_servicename(talloc_tos(), snum); + char *remark = lp_comment(p->mem_ctx, snum); if (remark) { remark = talloc_sub_advanced( - p->mem_ctx, lp_servicename(snum), - get_current_username(), lp_pathname(snum), - p->session_info->utok.uid, get_current_username(), + p->mem_ctx, lp_servicename(talloc_tos(), snum), + get_current_username(), lp_pathname(talloc_tos(), snum), + p->session_info->unix_token->uid, get_current_username(), "", remark); } @@ -396,22 +311,22 @@ static void init_srv_share_info_501(struct pipes_struct *p, static void init_srv_share_info_502(struct pipes_struct *p, struct srvsvc_NetShareInfo502 *r, int snum) { - const char *net_name = lp_servicename(snum); + const char *net_name = lp_servicename(talloc_tos(), snum); char *path = NULL; struct security_descriptor *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)); + char *remark = lp_comment(ctx, snum); if (remark) { remark = talloc_sub_advanced( - p->mem_ctx, lp_servicename(snum), - get_current_username(), lp_pathname(snum), - p->session_info->utok.uid, get_current_username(), + p->mem_ctx, lp_servicename(talloc_tos(), snum), + get_current_username(), lp_pathname(talloc_tos(), snum), + p->session_info->unix_token->uid, get_current_username(), "", remark); } - path = talloc_asprintf(ctx, "C:%s", lp_pathname(snum)); + path = talloc_asprintf(ctx, "C:%s", lp_pathname(talloc_tos(), snum)); if (path) { /* * Change / to \\ so that win2k will see it as a valid path. This was added to @@ -420,7 +335,7 @@ static void init_srv_share_info_502(struct pipes_struct *p, string_replace(path, '/', '\\'); } - sd = get_share_security(ctx, lp_servicename(snum), &sd_size); + sd = get_share_security(ctx, lp_servicename(talloc_tos(), snum), &sd_size); sd_buf = make_sec_desc_buf(p->mem_ctx, sd_size, sd); @@ -443,13 +358,13 @@ static void init_srv_share_info_1004(struct pipes_struct *p, struct srvsvc_NetShareInfo1004 *r, int snum) { - char *remark = talloc_strdup(p->mem_ctx, lp_comment(snum)); + char *remark = lp_comment(p->mem_ctx, snum); if (remark) { remark = talloc_sub_advanced( - p->mem_ctx, lp_servicename(snum), - get_current_username(), lp_pathname(snum), - p->session_info->utok.uid, get_current_username(), + p->mem_ctx, lp_servicename(talloc_tos(), snum), + get_current_username(), lp_pathname(talloc_tos(), snum), + p->session_info->unix_token->uid, get_current_username(), "", remark); } @@ -511,7 +426,7 @@ static void init_srv_share_info_1501(struct pipes_struct *p, size_t sd_size; TALLOC_CTX *ctx = p->mem_ctx; - sd = get_share_security(ctx, lp_servicename(snum), &sd_size); + sd = get_share_security(ctx, lp_servicename(talloc_tos(), snum), &sd_size); if (sd) { sd_buf = make_sec_desc_buf(p->mem_ctx, sd_size, sd); } @@ -525,7 +440,7 @@ static void init_srv_share_info_1501(struct pipes_struct *p, static bool is_hidden_share(int snum) { - const char *net_name = lp_servicename(snum); + const char *net_name = lp_servicename(talloc_tos(), snum); return (net_name[strlen(net_name) - 1] == '$') ? True : False; } @@ -540,7 +455,8 @@ static bool is_enumeration_allowed(struct pipes_struct *p, return true; return share_access_check(p->session_info->security_token, - lp_servicename(snum), FILE_READ_DATA, NULL); + lp_servicename(talloc_tos(), snum), + FILE_READ_DATA, NULL); } /******************************************************************* @@ -568,12 +484,12 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, /* Ensure all the usershares are loaded. */ become_root(); - load_usershare_shares(); + load_usershare_shares(NULL, connections_snum_used); load_registry_shares(); num_services = lp_numservices(); unbecome_root(); - allowed = TALLOC_ZERO_ARRAY(ctx, bool, num_services); + allowed = talloc_zero_array(ctx, bool, num_services); W_ERROR_HAVE_NO_MEMORY(allowed); /* Count the number of entries. */ @@ -582,12 +498,12 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, is_enumeration_allowed(p, snum) && (all_shares || !is_hidden_share(snum)) ) { DEBUG(10, ("counting service %s\n", - lp_servicename(snum) ? lp_servicename(snum) : "(null)")); + lp_servicename(talloc_tos(), snum) ? lp_servicename(talloc_tos(), snum) : "(null)")); allowed[snum] = true; num_entries++; } else { DEBUG(10, ("NOT counting service %s\n", - lp_servicename(snum) ? lp_servicename(snum) : "(null)")); + lp_servicename(talloc_tos(), snum) ? lp_servicename(talloc_tos(), snum) : "(null)")); } } @@ -599,11 +515,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, alloc_entries = num_entries - resume_handle; switch (info_ctr->level) { case 0: - ctr.ctr0 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr0); + ctr.ctr0 = talloc_zero(ctx, struct srvsvc_NetShareCtr0); W_ERROR_HAVE_NO_MEMORY(ctr.ctr0); ctr.ctr0->count = alloc_entries; - ctr.ctr0->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo0, alloc_entries); + ctr.ctr0->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo0, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr0->array); for (snum = 0; snum < num_services; snum++) { @@ -616,11 +532,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 1: - ctr.ctr1 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr1); + ctr.ctr1 = talloc_zero(ctx, struct srvsvc_NetShareCtr1); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1); ctr.ctr1->count = alloc_entries; - ctr.ctr1->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo1, alloc_entries); + ctr.ctr1->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo1, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1->array); for (snum = 0; snum < num_services; snum++) { @@ -633,11 +549,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 2: - ctr.ctr2 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr2); + ctr.ctr2 = talloc_zero(ctx, struct srvsvc_NetShareCtr2); W_ERROR_HAVE_NO_MEMORY(ctr.ctr2); ctr.ctr2->count = alloc_entries; - ctr.ctr2->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo2, alloc_entries); + ctr.ctr2->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo2, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr2->array); for (snum = 0; snum < num_services; snum++) { @@ -650,11 +566,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 501: - ctr.ctr501 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr501); + ctr.ctr501 = talloc_zero(ctx, struct srvsvc_NetShareCtr501); W_ERROR_HAVE_NO_MEMORY(ctr.ctr501); ctr.ctr501->count = alloc_entries; - ctr.ctr501->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo501, alloc_entries); + ctr.ctr501->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo501, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr501->array); for (snum = 0; snum < num_services; snum++) { @@ -667,11 +583,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 502: - ctr.ctr502 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr502); + ctr.ctr502 = talloc_zero(ctx, struct srvsvc_NetShareCtr502); W_ERROR_HAVE_NO_MEMORY(ctr.ctr502); ctr.ctr502->count = alloc_entries; - ctr.ctr502->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo502, alloc_entries); + ctr.ctr502->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo502, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr502->array); for (snum = 0; snum < num_services; snum++) { @@ -684,11 +600,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 1004: - ctr.ctr1004 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr1004); + ctr.ctr1004 = talloc_zero(ctx, struct srvsvc_NetShareCtr1004); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1004); ctr.ctr1004->count = alloc_entries; - ctr.ctr1004->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo1004, alloc_entries); + ctr.ctr1004->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo1004, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1004->array); for (snum = 0; snum < num_services; snum++) { @@ -701,11 +617,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 1005: - ctr.ctr1005 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr1005); + ctr.ctr1005 = talloc_zero(ctx, struct srvsvc_NetShareCtr1005); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1005); ctr.ctr1005->count = alloc_entries; - ctr.ctr1005->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo1005, alloc_entries); + ctr.ctr1005->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo1005, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1005->array); for (snum = 0; snum < num_services; snum++) { @@ -718,11 +634,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 1006: - ctr.ctr1006 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr1006); + ctr.ctr1006 = talloc_zero(ctx, struct srvsvc_NetShareCtr1006); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1006); ctr.ctr1006->count = alloc_entries; - ctr.ctr1006->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo1006, alloc_entries); + ctr.ctr1006->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo1006, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1006->array); for (snum = 0; snum < num_services; snum++) { @@ -735,11 +651,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 1007: - ctr.ctr1007 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr1007); + ctr.ctr1007 = talloc_zero(ctx, struct srvsvc_NetShareCtr1007); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1007); ctr.ctr1007->count = alloc_entries; - ctr.ctr1007->array = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetShareInfo1007, alloc_entries); + ctr.ctr1007->array = talloc_zero_array(ctx, struct srvsvc_NetShareInfo1007, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1007->array); for (snum = 0; snum < num_services; snum++) { @@ -752,11 +668,11 @@ static WERROR init_srv_share_info_ctr(struct pipes_struct *p, break; case 1501: - ctr.ctr1501 = TALLOC_ZERO_P(ctx, struct srvsvc_NetShareCtr1501); + ctr.ctr1501 = talloc_zero(ctx, struct srvsvc_NetShareCtr1501); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1501); ctr.ctr1501->count = alloc_entries; - ctr.ctr1501->array = TALLOC_ZERO_ARRAY(ctx, struct sec_desc_buf, alloc_entries); + ctr.ctr1501->array = talloc_zero_array(ctx, struct sec_desc_buf, alloc_entries); W_ERROR_HAVE_NO_MEMORY(ctr.ctr1501->array); for (snum = 0; snum < num_services; snum++) { @@ -815,7 +731,7 @@ static WERROR init_srv_sess_info_0(struct pipes_struct *p, for (; resume_handle < *total_entries; resume_handle++) { - ctr0->array = TALLOC_REALLOC_ARRAY(p->mem_ctx, + ctr0->array = talloc_realloc(p->mem_ctx, ctr0->array, struct srvsvc_NetSessInfo0, num_entries+1); @@ -849,7 +765,7 @@ static void sess_file_fn( const struct share_mode_entry *e, { struct sess_file_count *sess = (struct sess_file_count *)data; - if ( procid_equal(&e->pid, &sess->pid) && (sess->uid == e->uid) ) { + if (serverid_equal(&e->pid, &sess->pid) && (sess->uid == e->uid)) { sess->count++; } @@ -900,7 +816,7 @@ static WERROR init_srv_sess_info_1(struct pipes_struct *p, for (; resume_handle < *total_entries; resume_handle++) { uint32 num_files; uint32 connect_time; - struct passwd *pw = sys_getpwnam(session_list[resume_handle].username); + struct passwd *pw = getpwnam(session_list[resume_handle].username); bool guest; if ( !pw ) { @@ -913,7 +829,7 @@ static WERROR init_srv_sess_info_1(struct pipes_struct *p, num_files = net_count_files(pw->pw_uid, session_list[resume_handle].pid); guest = strequal( session_list[resume_handle].username, lp_guestaccount() ); - ctr1->array = TALLOC_REALLOC_ARRAY(p->mem_ctx, + ctr1->array = talloc_realloc(p->mem_ctx, ctr1->array, struct srvsvc_NetSessInfo1, num_entries+1); @@ -968,7 +884,7 @@ static WERROR init_srv_conn_info_0(struct srvsvc_NetConnCtr0 *ctr0, for (; resume_handle < *total_entries; resume_handle++) { - ctr0->array = TALLOC_REALLOC_ARRAY(talloc_tos(), + ctr0->array = talloc_realloc(talloc_tos(), ctr0->array, struct srvsvc_NetConnInfo0, num_entries+1); @@ -1022,7 +938,7 @@ static WERROR init_srv_conn_info_1(struct srvsvc_NetConnCtr1 *ctr1, for (; resume_handle < *total_entries; resume_handle++) { - ctr1->array = TALLOC_REALLOC_ARRAY(talloc_tos(), + ctr1->array = talloc_realloc(talloc_tos(), ctr1->array, struct srvsvc_NetConnInfo1, num_entries+1); @@ -1098,11 +1014,6 @@ WERROR _srvsvc_NetFileEnum(struct pipes_struct *p, goto done; } - werr = net_enum_pipes(ctx, r->in.user, &ctr3, resume_hnd); - if (!W_ERROR_IS_OK(werr)) { - goto done; - } - *r->out.totalentries = ctr3->count; r->out.info_ctr->ctr.ctr3->array = ctr3->array; r->out.info_ctr->ctr.ctr3->count = ctr3->count; @@ -1138,17 +1049,17 @@ WERROR _srvsvc_NetSrvGetInfo(struct pipes_struct *p, case 102: { struct srvsvc_NetSrvInfo102 *info102; - info102 = TALLOC_P(p->mem_ctx, struct srvsvc_NetSrvInfo102); + info102 = talloc(p->mem_ctx, struct srvsvc_NetSrvInfo102); if (!info102) { return WERR_NOMEM; } info102->platform_id = PLATFORM_ID_NT; - info102->server_name = global_myname(); - info102->version_major = lp_major_announce_version(); - info102->version_minor = lp_minor_announce_version(); + info102->server_name = lp_netbios_name(); + info102->version_major = SAMBA_MAJOR_NBT_ANNOUNCE_VERSION; + info102->version_minor = SAMBA_MINOR_NBT_ANNOUNCE_VERSION; info102->server_type = lp_default_server_announce(); - info102->comment = string_truncate(lp_serverstring(), + info102->comment = string_truncate(lp_serverstring(talloc_tos()), MAX_SERVER_STRING_LENGTH); info102->users = 0xffffffff; info102->disc = 0xf; @@ -1164,17 +1075,17 @@ WERROR _srvsvc_NetSrvGetInfo(struct pipes_struct *p, case 101: { struct srvsvc_NetSrvInfo101 *info101; - info101 = TALLOC_P(p->mem_ctx, struct srvsvc_NetSrvInfo101); + info101 = talloc(p->mem_ctx, struct srvsvc_NetSrvInfo101); if (!info101) { return WERR_NOMEM; } info101->platform_id = PLATFORM_ID_NT; - info101->server_name = global_myname(); - info101->version_major = lp_major_announce_version(); - info101->version_minor = lp_minor_announce_version(); + info101->server_name = lp_netbios_name(); + info101->version_major = SAMBA_MAJOR_NBT_ANNOUNCE_VERSION; + info101->version_minor = SAMBA_MINOR_NBT_ANNOUNCE_VERSION; info101->server_type = lp_default_server_announce(); - info101->comment = string_truncate(lp_serverstring(), + info101->comment = string_truncate(lp_serverstring(talloc_tos()), MAX_SERVER_STRING_LENGTH); r->out.info->info101 = info101; @@ -1183,13 +1094,13 @@ WERROR _srvsvc_NetSrvGetInfo(struct pipes_struct *p, case 100: { struct srvsvc_NetSrvInfo100 *info100; - info100 = TALLOC_P(p->mem_ctx, struct srvsvc_NetSrvInfo100); + info100 = talloc(p->mem_ctx, struct srvsvc_NetSrvInfo100); if (!info100) { return WERR_NOMEM; } info100->platform_id = PLATFORM_ID_NT; - info100->server_name = global_myname(); + info100->server_name = lp_netbios_name(); r->out.info->info100 = info100; @@ -1331,7 +1242,7 @@ WERROR _srvsvc_NetSessDel(struct pipes_struct *p, /* fail out now if you are not root or not a domain admin */ - if ((p->session_info->utok.uid != sec_initial_uid()) && + if ((p->session_info->unix_token->uid != sec_initial_uid()) && ( ! nt_token_check_domain_rid(p->session_info->security_token, DOMAIN_RID_ADMINS))) { @@ -1345,7 +1256,7 @@ WERROR _srvsvc_NetSessDel(struct pipes_struct *p, NTSTATUS ntstat; - if (p->session_info->utok.uid != sec_initial_uid()) { + if (p->session_info->unix_token->uid != sec_initial_uid()) { not_root = True; become_root(); } @@ -1453,47 +1364,47 @@ WERROR _srvsvc_NetShareGetInfo(struct pipes_struct *p, switch (r->in.level) { case 0: - info->info0 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo0); + info->info0 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo0); W_ERROR_HAVE_NO_MEMORY(info->info0); init_srv_share_info_0(p, info->info0, snum); break; case 1: - info->info1 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo1); + info->info1 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1); W_ERROR_HAVE_NO_MEMORY(info->info1); init_srv_share_info_1(p, info->info1, snum); break; case 2: - info->info2 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo2); + info->info2 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo2); W_ERROR_HAVE_NO_MEMORY(info->info2); init_srv_share_info_2(p, info->info2, snum); break; case 501: - info->info501 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo501); + info->info501 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo501); W_ERROR_HAVE_NO_MEMORY(info->info501); init_srv_share_info_501(p, info->info501, snum); break; case 502: - info->info502 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo502); + info->info502 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo502); W_ERROR_HAVE_NO_MEMORY(info->info502); init_srv_share_info_502(p, info->info502, snum); break; case 1004: - info->info1004 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo1004); + info->info1004 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1004); W_ERROR_HAVE_NO_MEMORY(info->info1004); init_srv_share_info_1004(p, info->info1004, snum); break; case 1005: - info->info1005 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo1005); + info->info1005 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1005); W_ERROR_HAVE_NO_MEMORY(info->info1005); init_srv_share_info_1005(p, info->info1005, snum); break; case 1006: - info->info1006 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo1006); + info->info1006 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1006); W_ERROR_HAVE_NO_MEMORY(info->info1006); init_srv_share_info_1006(p, info->info1006, snum); break; case 1007: - info->info1007 = TALLOC_P(p->mem_ctx, struct srvsvc_NetShareInfo1007); + info->info1007 = talloc(p->mem_ctx, struct srvsvc_NetShareInfo1007); W_ERROR_HAVE_NO_MEMORY(info->info1007); init_srv_share_info_1007(p, info->info1007, snum); break; @@ -1570,18 +1481,18 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p, /* fail out now if you are not root and not a disk op */ - if ( p->session_info->utok.uid != sec_initial_uid() && !is_disk_op ) { + if ( p->session_info->unix_token->uid != sec_initial_uid() && !is_disk_op ) { DEBUG(2,("_srvsvc_NetShareSetInfo: uid %u doesn't have the " "SeDiskOperatorPrivilege privilege needed to modify " "share %s\n", - (unsigned int)p->session_info->utok.uid, + (unsigned int)p->session_info->unix_token->uid, share_name )); return WERR_ACCESS_DENIED; } switch (r->in.level) { case 1: - pathname = talloc_strdup(ctx, lp_pathname(snum)); + pathname = lp_pathname(ctx, snum); comment = talloc_strdup(ctx, info->info1->comment); type = info->info1->type; psd = NULL; @@ -1610,7 +1521,7 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p, map_generic_share_sd_bits(psd); break; case 1004: - pathname = talloc_strdup(ctx, lp_pathname(snum)); + pathname = lp_pathname(ctx, snum); comment = talloc_strdup(ctx, info->info1004->comment); type = STYPE_DISKTREE; break; @@ -1631,8 +1542,8 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p, case 1007: return WERR_ACCESS_DENIED; case 1501: - pathname = talloc_strdup(ctx, lp_pathname(snum)); - comment = talloc_strdup(ctx, lp_comment(snum)); + pathname = lp_pathname(ctx, snum); + comment = lp_comment(ctx, snum); psd = info->info1501->sd; map_generic_share_sd_bits(psd); type = STYPE_DISKTREE; @@ -1668,20 +1579,20 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p, string_replace(comment, '"', ' '); DEBUG(10,("_srvsvc_NetShareSetInfo: change share command = %s\n", - lp_change_share_cmd() ? lp_change_share_cmd() : "NULL" )); + lp_change_share_cmd(talloc_tos()) ? lp_change_share_cmd(talloc_tos()) : "NULL" )); /* Only call modify function if something changed. */ - if (strcmp(path, lp_pathname(snum)) || strcmp(comment, lp_comment(snum)) + if (strcmp(path, lp_pathname(talloc_tos(), snum)) || strcmp(comment, lp_comment(talloc_tos(), snum)) || (lp_max_connections(snum) != max_connections)) { - if (!lp_change_share_cmd() || !*lp_change_share_cmd()) { + if (!lp_change_share_cmd(talloc_tos()) || !*lp_change_share_cmd(talloc_tos())) { DEBUG(10,("_srvsvc_NetShareSetInfo: No change share command\n")); return WERR_ACCESS_DENIED; } command = talloc_asprintf(p->mem_ctx, "%s \"%s\" \"%s\" \"%s\" \"%s\" %d", - lp_change_share_cmd(), + lp_change_share_cmd(talloc_tos()), get_dyn_CONFIGFILE(), share_name, path, @@ -1726,7 +1637,7 @@ WERROR _srvsvc_NetShareSetInfo(struct pipes_struct *p, struct security_descriptor *old_sd; size_t sd_size; - old_sd = get_share_security(p->mem_ctx, lp_servicename(snum), &sd_size); + old_sd = get_share_security(p->mem_ctx, lp_servicename(talloc_tos(), snum), &sd_size); if (old_sd && !security_descriptor_equal(old_sd, psd)) { if (!set_share_security(share_name, psd)) @@ -1771,10 +1682,10 @@ WERROR _srvsvc_NetShareAdd(struct pipes_struct *p, is_disk_op = security_token_has_privilege(p->session_info->security_token, SEC_PRIV_DISK_OPERATOR); - if (p->session_info->utok.uid != sec_initial_uid() && !is_disk_op ) + if (p->session_info->unix_token->uid != sec_initial_uid() && !is_disk_op ) return WERR_ACCESS_DENIED; - if (!lp_add_share_cmd() || !*lp_add_share_cmd()) { + if (!lp_add_share_cmd(talloc_tos()) || !*lp_add_share_cmd(talloc_tos())) { DEBUG(10,("_srvsvc_NetShareAdd: No add share command\n")); return WERR_ACCESS_DENIED; } @@ -1870,7 +1781,7 @@ WERROR _srvsvc_NetShareAdd(struct pipes_struct *p, command = talloc_asprintf(ctx, "%s \"%s\" \"%s\" \"%s\" \"%s\" %d", - lp_add_share_cmd(), + lp_add_share_cmd(talloc_tos()), get_dyn_CONFIGFILE(), share_name_in, path, @@ -1977,19 +1888,19 @@ WERROR _srvsvc_NetShareDel(struct pipes_struct *p, is_disk_op = security_token_has_privilege(p->session_info->security_token, SEC_PRIV_DISK_OPERATOR); - if (p->session_info->utok.uid != sec_initial_uid() && !is_disk_op ) + if (p->session_info->unix_token->uid != sec_initial_uid() && !is_disk_op ) return WERR_ACCESS_DENIED; - if (!lp_delete_share_cmd() || !*lp_delete_share_cmd()) { + if (!lp_delete_share_cmd(talloc_tos()) || !*lp_delete_share_cmd(talloc_tos())) { DEBUG(10,("_srvsvc_NetShareDel: No delete share command\n")); return WERR_ACCESS_DENIED; } command = talloc_asprintf(ctx, "%s \"%s\" \"%s\"", - lp_delete_share_cmd(), + lp_delete_share_cmd(talloc_tos()), get_dyn_CONFIGFILE(), - lp_servicename(snum)); + lp_servicename(talloc_tos(), snum)); if (!command) { return WERR_NOMEM; } @@ -2018,7 +1929,7 @@ WERROR _srvsvc_NetShareDel(struct pipes_struct *p, return WERR_ACCESS_DENIED; /* Delete the SD in the database. */ - delete_share_security(lp_servicename(params->service)); + delete_share_security(lp_servicename(talloc_tos(), params->service)); lp_killservice(params->service); @@ -2061,7 +1972,7 @@ WERROR _srvsvc_NetRemoteTOD(struct pipes_struct *p, DEBUG(5,("_srvsvc_NetRemoteTOD: %d\n", __LINE__)); - if ( !(tod = TALLOC_ZERO_P(p->mem_ctx, struct srvsvc_NetRemoteTODInfo)) ) + if ( !(tod = talloc_zero(p->mem_ctx, struct srvsvc_NetRemoteTODInfo)) ) return WERR_NOMEM; *r->out.info = tod; @@ -2098,7 +2009,6 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p, struct srvsvc_NetGetFileSecurity *r) { struct smb_filename *smb_fname = NULL; - struct security_descriptor *psd = NULL; size_t sd_size; char *servicename = NULL; SMB_STRUCT_STAT st; @@ -2127,9 +2037,12 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p, goto error_exit; } - nt_status = create_conn_struct(talloc_tos(), &conn, snum, - lp_pathname(snum), p->session_info, - &oldcwd); + nt_status = create_conn_struct(talloc_tos(), + server_event_context(), + server_messaging_context(), + &conn, + snum, lp_pathname(talloc_tos(), snum), + p->session_info, &oldcwd); if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(10, ("create_conn_struct failed: %s\n", nt_errstr(nt_status))); @@ -2174,33 +2087,35 @@ WERROR _srvsvc_NetGetFileSecurity(struct pipes_struct *p, goto error_exit; } + sd_buf = talloc_zero(p->mem_ctx, struct sec_desc_buf); + if (!sd_buf) { + werr = WERR_NOMEM; + goto error_exit; + } + nt_status = SMB_VFS_FGET_NT_ACL(fsp, (SECINFO_OWNER |SECINFO_GROUP - |SECINFO_DACL), &psd); + |SECINFO_DACL), sd_buf, &sd_buf->sd); if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(3,("_srvsvc_NetGetFileSecurity: Unable to get NT ACL " "for file %s\n", smb_fname_str_dbg(smb_fname))); werr = ntstatus_to_werror(nt_status); + TALLOC_FREE(sd_buf); goto error_exit; } - sd_size = ndr_size_security_descriptor(psd, 0); - - sd_buf = TALLOC_ZERO_P(p->mem_ctx, struct sec_desc_buf); - if (!sd_buf) { - werr = WERR_NOMEM; - goto error_exit; + if (sd_buf->sd->dacl) { + sd_buf->sd->dacl->revision = NT4_ACL_REVISION; } + sd_size = ndr_size_security_descriptor(sd_buf->sd, 0); + sd_buf->sd_size = sd_size; - sd_buf->sd = psd; *r->out.sd_buf = sd_buf; - psd->dacl->revision = NT4_ACL_REVISION; - close_file(NULL, fsp, NORMAL_CLOSE); vfs_ChDir(conn, oldcwd); SMB_VFS_DISCONNECT(conn); @@ -2224,6 +2139,7 @@ error_exit: } done: + TALLOC_FREE(smb_fname); return werr; @@ -2268,9 +2184,12 @@ WERROR _srvsvc_NetSetFileSecurity(struct pipes_struct *p, goto error_exit; } - nt_status = create_conn_struct(talloc_tos(), &conn, snum, - lp_pathname(snum), p->session_info, - &oldcwd); + nt_status = create_conn_struct(talloc_tos(), + server_event_context(), + server_messaging_context(), + &conn, + snum, lp_pathname(talloc_tos(), snum), + p->session_info, &oldcwd); if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(10, ("create_conn_struct failed: %s\n", nt_errstr(nt_status))); @@ -2418,7 +2337,7 @@ WERROR _srvsvc_NetDiskEnum(struct pipes_struct *p, *r->out.totalentries = init_server_disk_enum(&resume); - r->out.info->disks = TALLOC_ZERO_ARRAY(ctx, struct srvsvc_NetDiskInfo0, + r->out.info->disks = talloc_zero_array(ctx, struct srvsvc_NetDiskInfo0, MAX_SERVER_DISK_ENTRIES); W_ERROR_HAVE_NO_MEMORY(r->out.info->disks); @@ -2528,7 +2447,7 @@ WERROR _srvsvc_NetFileClose(struct pipes_struct *p, is_disk_op = security_token_has_privilege(p->session_info->security_token, SEC_PRIV_DISK_OPERATOR); - if (p->session_info->utok.uid != sec_initial_uid() && !is_disk_op) { + if (p->session_info->unix_token->uid != sec_initial_uid() && !is_disk_op) { return WERR_ACCESS_DENIED; } @@ -2548,244 +2467,244 @@ WERROR _srvsvc_NetFileClose(struct pipes_struct *p, WERROR _srvsvc_NetCharDevEnum(struct pipes_struct *p, struct srvsvc_NetCharDevEnum *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetCharDevGetInfo(struct pipes_struct *p, struct srvsvc_NetCharDevGetInfo *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetCharDevControl(struct pipes_struct *p, struct srvsvc_NetCharDevControl *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetCharDevQEnum(struct pipes_struct *p, struct srvsvc_NetCharDevQEnum *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetCharDevQGetInfo(struct pipes_struct *p, struct srvsvc_NetCharDevQGetInfo *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetCharDevQSetInfo(struct pipes_struct *p, struct srvsvc_NetCharDevQSetInfo *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetCharDevQPurge(struct pipes_struct *p, struct srvsvc_NetCharDevQPurge *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetCharDevQPurgeSelf(struct pipes_struct *p, struct srvsvc_NetCharDevQPurgeSelf *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetFileGetInfo(struct pipes_struct *p, struct srvsvc_NetFileGetInfo *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetShareCheck(struct pipes_struct *p, struct srvsvc_NetShareCheck *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetServerStatisticsGet(struct pipes_struct *p, struct srvsvc_NetServerStatisticsGet *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetTransportAdd(struct pipes_struct *p, struct srvsvc_NetTransportAdd *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetTransportEnum(struct pipes_struct *p, struct srvsvc_NetTransportEnum *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetTransportDel(struct pipes_struct *p, struct srvsvc_NetTransportDel *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetSetServiceBits(struct pipes_struct *p, struct srvsvc_NetSetServiceBits *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetPathType(struct pipes_struct *p, struct srvsvc_NetPathType *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetPathCanonicalize(struct pipes_struct *p, struct srvsvc_NetPathCanonicalize *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetPathCompare(struct pipes_struct *p, struct srvsvc_NetPathCompare *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRPRNAMECANONICALIZE(struct pipes_struct *p, struct srvsvc_NETRPRNAMECANONICALIZE *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetPRNameCompare(struct pipes_struct *p, struct srvsvc_NetPRNameCompare *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetShareDelStart(struct pipes_struct *p, struct srvsvc_NetShareDelStart *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetShareDelCommit(struct pipes_struct *p, struct srvsvc_NetShareDelCommit *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetServerTransportAddEx(struct pipes_struct *p, struct srvsvc_NetServerTransportAddEx *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NetServerSetServiceBitsEx(struct pipes_struct *p, struct srvsvc_NetServerSetServiceBitsEx *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSGETVERSION(struct pipes_struct *p, struct srvsvc_NETRDFSGETVERSION *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSCREATELOCALPARTITION(struct pipes_struct *p, struct srvsvc_NETRDFSCREATELOCALPARTITION *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSDELETELOCALPARTITION(struct pipes_struct *p, struct srvsvc_NETRDFSDELETELOCALPARTITION *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSSETLOCALVOLUMESTATE(struct pipes_struct *p, struct srvsvc_NETRDFSSETLOCALVOLUMESTATE *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSSETSERVERINFO(struct pipes_struct *p, struct srvsvc_NETRDFSSETSERVERINFO *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSCREATEEXITPOINT(struct pipes_struct *p, struct srvsvc_NETRDFSCREATEEXITPOINT *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSDELETEEXITPOINT(struct pipes_struct *p, struct srvsvc_NETRDFSDELETEEXITPOINT *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSMODIFYPREFIX(struct pipes_struct *p, struct srvsvc_NETRDFSMODIFYPREFIX *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSFIXLOCALVOLUME(struct pipes_struct *p, struct srvsvc_NETRDFSFIXLOCALVOLUME *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRDFSMANAGERREPORTSITEINFO(struct pipes_struct *p, struct srvsvc_NETRDFSMANAGERREPORTSITEINFO *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } WERROR _srvsvc_NETRSERVERTRANSPORTDELEX(struct pipes_struct *p, struct srvsvc_NETRSERVERTRANSPORTDELEX *r) { - p->rng_fault_state = True; + p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return WERR_NOT_SUPPORTED; } |