mirror of
https://github.com/samba-team/samba.git
synced 2025-01-25 06:04:04 +03:00
Fix the build :-(. Ask winbindd if we find a negative cache entry (or should
we just call the legacy function ?). Jeremy. (This used to be commit 566d3b6e76afeca8e862cb36202a5283b86920e4)
This commit is contained in:
parent
d2f223d83d
commit
95cc5ee395
@ -1287,13 +1287,16 @@ static bool legacy_sid_to_gid(const DOM_SID *psid, gid_t *pgid)
|
|||||||
void uid_to_sid(DOM_SID *psid, uid_t uid)
|
void uid_to_sid(DOM_SID *psid, uid_t uid)
|
||||||
{
|
{
|
||||||
bool expired = true;
|
bool expired = true;
|
||||||
|
bool ret;
|
||||||
ZERO_STRUCTP(psid);
|
ZERO_STRUCTP(psid);
|
||||||
|
|
||||||
if (fetch_sid_from_uid_cache(psid, uid))
|
if (fetch_sid_from_uid_cache(psid, uid))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Check the winbindd cache directly. */
|
/* Check the winbindd cache directly. */
|
||||||
if (!idmap_cache_find_uid2sid(uid, psid, &expired) || expired) {
|
ret = idmap_cache_find_uid2sid(uid, psid, &expired);
|
||||||
|
|
||||||
|
if (!ret || expired || (ret && is_null_sid(psid))) {
|
||||||
/* Not in cache. Ask winbindd. */
|
/* Not in cache. Ask winbindd. */
|
||||||
if (!winbind_uid_to_sid(psid, uid)) {
|
if (!winbind_uid_to_sid(psid, uid)) {
|
||||||
if (!winbind_ping()) {
|
if (!winbind_ping()) {
|
||||||
@ -1321,13 +1324,16 @@ void uid_to_sid(DOM_SID *psid, uid_t uid)
|
|||||||
void gid_to_sid(DOM_SID *psid, gid_t gid)
|
void gid_to_sid(DOM_SID *psid, gid_t gid)
|
||||||
{
|
{
|
||||||
bool expired = true;
|
bool expired = true;
|
||||||
|
bool ret;
|
||||||
ZERO_STRUCTP(psid);
|
ZERO_STRUCTP(psid);
|
||||||
|
|
||||||
if (fetch_sid_from_gid_cache(psid, gid))
|
if (fetch_sid_from_gid_cache(psid, gid))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Check the winbindd cache directly. */
|
/* Check the winbindd cache directly. */
|
||||||
if (!idmap_cache_find_gid2sid(gid, psid, &expired) || expired) {
|
ret = idmap_cache_find_gid2sid(gid, psid, &expired);
|
||||||
|
|
||||||
|
if (!ret || expired || (ret && is_null_sid(psid))) {
|
||||||
/* Not in cache. Ask winbindd. */
|
/* Not in cache. Ask winbindd. */
|
||||||
if (!winbind_gid_to_sid(psid, gid)) {
|
if (!winbind_gid_to_sid(psid, gid)) {
|
||||||
if (!winbind_ping()) {
|
if (!winbind_ping()) {
|
||||||
@ -1355,6 +1361,7 @@ void gid_to_sid(DOM_SID *psid, gid_t gid)
|
|||||||
bool sid_to_uid(const DOM_SID *psid, uid_t *puid)
|
bool sid_to_uid(const DOM_SID *psid, uid_t *puid)
|
||||||
{
|
{
|
||||||
bool expired = true;
|
bool expired = true;
|
||||||
|
bool ret;
|
||||||
uint32 rid;
|
uint32 rid;
|
||||||
gid_t gid;
|
gid_t gid;
|
||||||
|
|
||||||
@ -1378,7 +1385,9 @@ bool sid_to_uid(const DOM_SID *psid, uid_t *puid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check the winbindd cache directly. */
|
/* Check the winbindd cache directly. */
|
||||||
if (!idmap_cache_find_sid2uid(psid, puid, &expired) || expired) {
|
ret = idmap_cache_find_sid2uid(psid, puid, &expired);
|
||||||
|
|
||||||
|
if (!ret || expired || (ret && (*puid == (uid_t)-1))) {
|
||||||
/* Not in cache. Ask winbindd. */
|
/* Not in cache. Ask winbindd. */
|
||||||
if (!winbind_sid_to_uid(puid, psid)) {
|
if (!winbind_sid_to_uid(puid, psid)) {
|
||||||
if (!winbind_ping()) {
|
if (!winbind_ping()) {
|
||||||
@ -1409,6 +1418,7 @@ bool sid_to_uid(const DOM_SID *psid, uid_t *puid)
|
|||||||
bool sid_to_gid(const DOM_SID *psid, gid_t *pgid)
|
bool sid_to_gid(const DOM_SID *psid, gid_t *pgid)
|
||||||
{
|
{
|
||||||
bool expired = true;
|
bool expired = true;
|
||||||
|
bool ret;
|
||||||
uint32 rid;
|
uint32 rid;
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
|
|
||||||
@ -1431,8 +1441,10 @@ bool sid_to_gid(const DOM_SID *psid, gid_t *pgid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Check the winbindd cache directly. */
|
/* Check the winbindd cache directly. */
|
||||||
if (!idmap_cache_find_sid2gid(psid, pgid, &expired) || expired) {
|
ret = idmap_cache_find_sid2gid(psid, pgid, &expired);
|
||||||
/* Not in cache. Ask winbindd. */
|
|
||||||
|
if (!ret || expired || (ret && (*pgid == (gid_t)-1))) {
|
||||||
|
/* Not in cache or negative. Ask winbindd. */
|
||||||
/* Ask winbindd if it can map this sid to a gid.
|
/* Ask winbindd if it can map this sid to a gid.
|
||||||
* (Idmap will check it is a valid SID and of the right type) */
|
* (Idmap will check it is a valid SID and of the right type) */
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user