[SCM] Samba Shared Repository - branch master updated
Volker Lendecke
vlendec at samba.org
Mon Sep 5 08:31:03 MDT 2011
The branch, master has been updated
via 303962e s3: Fix smbcontrol smbd idmap kill S-1-5-21-...
via 76ba678 s3: Reformat msg_idmap.c to match Samba coding
from d7eb4a4 libcli/smb: add PROTOCOL_SMB2_10
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 303962e3708266810996cde496a6f87b7b4c4bc6
Author: Volker Lendecke <vl at samba.org>
Date: Mon Sep 5 13:11:59 2011 +0200
s3: Fix smbcontrol smbd idmap kill S-1-5-21-...
The calls to sid_to_gid and sid_to_uid create id mapping entries themselves,
which makes it pretty difficult to reliably delete id mapping entries
everywhere just using a SID.
Autobuild-User: Volker Lendecke <vlendec at samba.org>
Autobuild-Date: Mon Sep 5 16:30:41 CEST 2011 on sn-devel-104
commit 76ba67862f9615ca325d4118496837ca27c710e0
Author: Volker Lendecke <vl at samba.org>
Date: Mon Sep 5 13:02:54 2011 +0200
s3: Reformat msg_idmap.c to match Samba coding
-----------------------------------------------------------------------
Summary of changes:
source3/smbd/msg_idmap.c | 58 +++++++++++++++++++++++++++++++---------------
1 files changed, 39 insertions(+), 19 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/smbd/msg_idmap.c b/source3/smbd/msg_idmap.c
index 702f545..dbd151d 100644
--- a/source3/smbd/msg_idmap.c
+++ b/source3/smbd/msg_idmap.c
@@ -21,16 +21,18 @@
#include "smbd/globals.h"
#include "smbd/smbd.h"
#include "../libcli/security/dom_sid.h"
+#include "../libcli/security/security_token.h"
#include "idmap_cache.h"
#include "passdb/lookup_sid.h"
#include "auth.h"
#include "messages.h"
#include "lib/id_cache.h"
-static bool uid_in_use(const struct user_struct* user, uid_t uid)
+static bool uid_in_use(const struct user_struct *user, uid_t uid)
{
while (user) {
- if (user->session_info && (user->session_info->unix_token->uid == uid)) {
+ if (user->session_info &&
+ (user->session_info->unix_token->uid == uid)) {
return true;
}
user = user->next;
@@ -38,12 +40,14 @@ static bool uid_in_use(const struct user_struct* user, uid_t uid)
return false;
}
-static bool gid_in_use(const struct user_struct* user, gid_t gid)
+static bool gid_in_use(const struct user_struct *user, gid_t gid)
{
while (user) {
if (user->session_info != NULL) {
int i;
- struct security_unix_token *utok = user->session_info->unix_token;
+ struct security_unix_token *utok;
+
+ utok = user->session_info->unix_token;
if (utok->gid == gid) {
return true;
}
@@ -58,20 +62,34 @@ static bool gid_in_use(const struct user_struct* user, gid_t gid)
return false;
}
-static bool sid_in_use(const struct user_struct* user, const struct dom_sid* psid)
+static bool sid_in_use(const struct user_struct *user,
+ const struct dom_sid *psid)
{
- uid_t uid;
- gid_t gid;
- if (sid_to_gid(psid, &gid)) {
- return gid_in_use(user, gid);
- } else if (sid_to_uid(psid, &uid)) {
- return uid_in_use(user, uid);
+ while (user) {
+ struct security_token *tok;
+
+ if (user->session_info == NULL) {
+ continue;
+ }
+ tok = user->session_info->security_token;
+ if (tok == NULL) {
+ /*
+ * Not sure session_info->security_token can
+ * ever be NULL. This check might be not
+ * necessary.
+ */
+ continue;
+ }
+ if (security_token_has_sid(tok, psid)) {
+ return true;
+ }
+ user = user->next;
}
return false;
}
-static bool id_in_use(const struct user_struct* user,
- const struct id_cache_ref* id)
+static bool id_in_use(const struct user_struct *user,
+ const struct id_cache_ref *id)
{
switch(id->type) {
case UID:
@@ -87,13 +105,15 @@ static bool id_in_use(const struct user_struct* user,
}
static void id_cache_kill(struct messaging_context *msg_ctx,
- void *private_data,
- uint32_t msg_type,
- struct server_id server_id,
- DATA_BLOB* data)
+ void *private_data,
+ uint32_t msg_type,
+ struct server_id server_id,
+ DATA_BLOB* data)
{
- const char *msg = (data && data->data) ? (const char *)data->data : "<NULL>";
- struct user_struct *validated_users = smbd_server_conn->smb1.sessions.validated_users;
+ const char *msg = (data && data->data)
+ ? (const char *)data->data : "<NULL>";
+ struct user_struct *validated_users =
+ smbd_server_conn->smb1.sessions.validated_users;
struct id_cache_ref id;
if (!id_cache_ref_parse(msg, &id)) {
--
Samba Shared Repository
More information about the samba-cvs
mailing list