summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid O'Neill <dmo@samba.org>2001-01-15 18:36:50 +0000
committerDavid O'Neill <dmo@samba.org>2001-01-15 18:36:50 +0000
commit27922c0430bf28dca910d2a2903cf410a4187643 (patch)
tree155ab8add4ecdfd39a5975d4f99349a8742afde7
parent99f36944364016c33cc63f6be509fa22b7bba619 (diff)
downloadsamba-27922c0430bf28dca910d2a2903cf410a4187643.tar.gz
samba-27922c0430bf28dca910d2a2903cf410a4187643.tar.bz2
samba-27922c0430bf28dca910d2a2903cf410a4187643.zip
Changes from APPLIANCE_HEAD:
source/rpc_parse/parse_lsa.c - off by one unistr length bug in init_lsa_trans_name() source/lib/util_sid.c - resolve more BUILTIN sid values to names. source/nsswitch/wb_client.c - fix typo in debug message - set errno on error so we don't get bogus value from last failure. source/rpc_server/srv_spoolss_nt.c - add debug to track number of open printer handles for ease of tracking handle leaks in the future. source/rpc_server/srv_lsa.c - fix off-by-one string bug. This was preventing NT from displaying names for well-know SIDs in printer permissions dialog. (This used to be commit 59229b9025cff54cbdd05e374616ffbf9c6fee33)
-rw-r--r--source3/lib/util_sid.c13
-rw-r--r--source3/nsswitch/wb_client.c11
-rw-r--r--source3/rpc_parse/parse_lsa.c2
-rw-r--r--source3/rpc_server/srv_lsa.c6
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c2
5 files changed, 24 insertions, 10 deletions
diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c
index 94144bbbd1..98d4e77712 100644
--- a/source3/lib/util_sid.c
+++ b/source3/lib/util_sid.c
@@ -76,8 +76,14 @@ static known_sid_users nt_authority_users[] = {
{ 18, SID_NAME_ALIAS, "SYSTEM"},
{ 0, (enum SID_NAME_USE)0, NULL}};
-static known_sid_users builtin_users[] = {
- { DOMAIN_USER_RID_ADMIN, SID_NAME_USER, "Administrator" },
+static known_sid_users builtin_groups[] = {
+ { BUILTIN_ALIAS_RID_ADMINS, SID_NAME_ALIAS, "Administrators" },
+ { BUILTIN_ALIAS_RID_USERS, SID_NAME_ALIAS, "Users" },
+ { BUILTIN_ALIAS_RID_GUESTS, SID_NAME_ALIAS, "Guests" },
+ { BUILTIN_ALIAS_RID_ACCOUNT_OPS, SID_NAME_ALIAS, "Account Operators" },
+ { BUILTIN_ALIAS_RID_SYSTEM_OPS, SID_NAME_ALIAS, "Server Operators" },
+ { BUILTIN_ALIAS_RID_PRINT_OPS, SID_NAME_ALIAS, "Print Operators" },
+ { BUILTIN_ALIAS_RID_BACKUP_OPS, SID_NAME_ALIAS, "Backup Operators" },
{ 0, (enum SID_NAME_USE)0, NULL}};
static struct sid_name_map_info
@@ -90,8 +96,7 @@ sid_name_map[] =
{
{ &global_sam_sid, global_myname, NULL},
{ &global_sam_sid, global_myworkgroup, NULL},
- { &global_sid_Builtin, "BUILTIN", NULL},
- { &global_sid_Builtin, "", &builtin_users[0]},
+ { &global_sid_Builtin, "BUILTIN", &builtin_groups[0]},
{ &global_sid_World_Domain, "", &everyone_users[0] },
{ &global_sid_Creator_Owner_Domain, "", &creator_owner_users[0] },
{ &global_sid_NT_Authority, "NT Authority", &nt_authority_users[0] },
diff --git a/source3/nsswitch/wb_client.c b/source3/nsswitch/wb_client.c
index 142c61d9c1..77c48352a3 100644
--- a/source3/nsswitch/wb_client.c
+++ b/source3/nsswitch/wb_client.c
@@ -266,8 +266,8 @@ int winbind_initgroups(char *user, gid_t gid)
result = wb_getgroups(user, &groups);
- DEBUG(10,("wb_getgroups: %s: result = %s\n", user, result == -1 ?
- "FAIL" : "SUCCESS"));
+ DEBUG(10,("winbind_getgroups: %s: result = %s\n", user,
+ result == -1 ? "FAIL" : "SUCCESS"));
if (result != -1) {
int ngroups = result, i;
@@ -303,6 +303,13 @@ int winbind_initgroups(char *user, gid_t gid)
result = -1;
goto done;
}
+
+ } else {
+
+ /* The call failed. Set errno to something so we don't get
+ a bogus value from the last failed system call. */
+
+ errno = EIO;
}
/* Free response data if necessary */
diff --git a/source3/rpc_parse/parse_lsa.c b/source3/rpc_parse/parse_lsa.c
index 6cef8c9920..97aae2d65b 100644
--- a/source3/rpc_parse/parse_lsa.c
+++ b/source3/rpc_parse/parse_lsa.c
@@ -34,7 +34,7 @@ static BOOL lsa_io_trans_names(char *desc, LSA_TRANS_NAME_ENUM *trn, prs_struct
void init_lsa_trans_name(LSA_TRANS_NAME *trn, UNISTR2 *uni_name,
uint16 sid_name_use, char *name, uint32 idx)
{
- int len_name = strlen(name)+1;
+ int len_name = strlen(name);
if(len_name == 0)
len_name = 1;
diff --git a/source3/rpc_server/srv_lsa.c b/source3/rpc_server/srv_lsa.c
index ed65e787b4..3538beefda 100644
--- a/source3/rpc_server/srv_lsa.c
+++ b/source3/rpc_server/srv_lsa.c
@@ -88,13 +88,13 @@ Init dom_query
static void init_dom_query(DOM_QUERY *d_q, char *dom_name, DOM_SID *dom_sid)
{
- int domlen = (dom_name != NULL) ? strlen(dom_name)+1 : 0;
+ int domlen = (dom_name != NULL) ? strlen(dom_name) : 0;
d_q->uni_dom_max_len = domlen * 2;
d_q->uni_dom_str_len = domlen * 2;
- d_q->buffer_dom_name = (dom_name != 0) ? 1 : 0;
- d_q->buffer_dom_sid = (dom_sid != NULL) ? 1 : 0;
+ d_q->buffer_dom_name = dom_name ? 1 : 0;
+ d_q->buffer_dom_sid = dom_sid ? 1 : 0;
/* this string is supposed to be character short */
init_unistr2(&d_q->uni_domain_name, dom_name, domlen);
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 23f8ab15ef..4355e2eb59 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -526,6 +526,8 @@ static BOOL open_printer_hnd(POLICY_HND *hnd, char *name)
return False;
}
+ DEBUG(5, ("%d printer handles active\n", ubi_dlCount(&Printer_list)));
+
return True;
}