author | Jiri Sasek <Jiri.Sasek@Sun.COM> |
Mon, 18 Jun 2012 11:06:49 -0700 | |
changeset 874 | cef42778dd8b |
permissions | -rw-r--r-- |
874
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
1 |
From 7a64da3189a1e901aff66aa5e2e46e4a9c03750f Mon Sep 17 00:00:00 2001 |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
2 |
From: Ira Cooper <[email protected]> |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
3 |
Date: Wed, 23 May 2012 21:39:03 -0400 |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
4 |
Subject: [PATCH] s3-passdb: Fix negative SID->uid/gid cache handling. (bug #8952) |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
5 |
|
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
6 |
-1 uid/gid signals a non existent uid/gid. |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
7 |
|
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
8 |
Signed-off-by: Stefan Metzmacher <[email protected]> |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
9 |
--- |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
10 |
source3/passdb/lookup_sid.c | 17 +++++++++++++++++ |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
11 |
1 files changed, 17 insertions(+), 0 deletions(-) |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
12 |
|
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
13 |
diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
14 |
index 5cf391f..2afa86e 100644 |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
15 |
--- a/source3/passdb/lookup_sid.c |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
16 |
+++ b/source3/passdb/lookup_sid.c |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
17 |
@@ -1490,7 +1490,24 @@ bool sids_to_unix_ids(const struct dom_sid *sids, uint32_t num_sids, |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
18 |
continue; |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
19 |
} |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
20 |
} |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
21 |
+ |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
22 |
done: |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
23 |
+ for (i=0; i<num_sids; i++) { |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
24 |
+ switch(ids[i].type) { |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
25 |
+ case WBC_ID_TYPE_GID: |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
26 |
+ if (ids[i].id.gid == (gid_t)-1) { |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
27 |
+ ids[i].type = WBC_ID_TYPE_NOT_SPECIFIED; |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
28 |
+ } |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
29 |
+ break; |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
30 |
+ case WBC_ID_TYPE_UID: |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
31 |
+ if (ids[i].id.uid == (uid_t)-1) { |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
32 |
+ ids[i].type = WBC_ID_TYPE_NOT_SPECIFIED; |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
33 |
+ } |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
34 |
+ break; |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
35 |
+ case WBC_ID_TYPE_NOT_SPECIFIED: |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
36 |
+ break; |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
37 |
+ } |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
38 |
+ } |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
39 |
ret = true; |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
40 |
fail: |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
41 |
TALLOC_FREE(wbc_ids); |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
42 |
-- |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
43 |
1.7.4.1 |
cef42778dd8b
7167490 Samba 3.6.4 coredumps when trying to use setgroups for the internal default gid -1
Jiri Sasek <Jiri.Sasek@Sun.COM>
parents:
diff
changeset
|
44 |