1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-04 17:47:26 +03:00

r1562: Make winbind for -S (sid->uid) and -Y (sid->gid) check whether the sid

requested actually is of type asked for. I've come across more than one
installation where a group sid had ended up as a uid in idmap and vice
versa. This just closes one possible for this misconfiguration, people
are actually using wbinfo.

Volker
(This used to be commit acfbd34025c2fde3d6a3e582c120c2b9de8ed39b)
This commit is contained in:
Volker Lendecke 2004-07-22 13:08:13 +00:00 committed by Gerald (Jerry) Carter
parent 77e12fe6cb
commit d810ffe58e

View File

@ -398,6 +398,27 @@ static BOOL wbinfo_sid_to_uid(char *sid)
ZERO_STRUCT(request);
ZERO_STRUCT(response);
/* First see whether the SID is actually a user -- otherwise
* winbind might end up a uid number for a group SID and this
* is asking for trouble later. */
fstrcpy(request.data.sid, sid);
if (winbindd_request(WINBINDD_LOOKUPSID, &request, &response) !=
NSS_STATUS_SUCCESS) {
d_printf("Could not lookup sid %s\n", sid);
return False;
}
if (response.data.name.type != SID_NAME_USER) {
d_printf("SID is of type %s\n",
sid_type_lookup(response.data.name.type));
return False;
}
ZERO_STRUCT(request);
ZERO_STRUCT(response);
/* Send request */
fstrcpy(request.data.sid, sid);
@ -421,6 +442,26 @@ static BOOL wbinfo_sid_to_gid(char *sid)
ZERO_STRUCT(request);
ZERO_STRUCT(response);
/* First see whether the SID is actually a group -- otherwise
* winbind might end up a gid number for a user SID and this
* is asking for trouble later. */
fstrcpy(request.data.sid, sid);
if (winbindd_request(WINBINDD_LOOKUPSID, &request, &response) !=
NSS_STATUS_SUCCESS) {
d_printf("Could not lookup sid %s\n", sid);
return False;
}
if ((response.data.name.type != SID_NAME_DOM_GRP) &&
(response.data.name.type != SID_NAME_ALIAS) &&
(response.data.name.type != SID_NAME_WKN_GRP)) {
d_printf("SID is of type %s\n",
sid_type_lookup(response.data.name.type));
return False;
}
/* Send request */
fstrcpy(request.data.sid, sid);