Lines Matching refs:res
174 char *res = NULL; in tolower_u8() local
189 if ((res = malloc(outlen)) == NULL) in tolower_u8()
191 outs = res; in tolower_u8()
196 if ((res = realloc(res, outlen + inbytesleft)) == NULL) in tolower_u8()
200 outs = res + outlen - outbytesleft; in tolower_u8()
207 free(res); in tolower_u8()
208 res = NULL; in tolower_u8()
212 res[outlen - outbytesleft] = '\0'; in tolower_u8()
214 return (res); in tolower_u8()
1224 lookup_wksids_sid2pid(idmap_mapping *req, idmap_id_res *res, int *is_wksid) in lookup_wksids_sid2pid() argument
1235 req->id1.idmap_id_u.sid.rid, res->id.idtype); in lookup_wksids_sid2pid()
1238 res->id.idtype); in lookup_wksids_sid2pid()
1288 if (res->id.idtype == IDMAP_POSIXID) { in lookup_wksids_sid2pid()
1289 res->id.idtype = wksid->is_wuser ? IDMAP_UID : IDMAP_GID; in lookup_wksids_sid2pid()
1311 switch (res->id.idtype) { in lookup_wksids_sid2pid()
1313 res->id.idmap_id_u.uid = wksid->pid; in lookup_wksids_sid2pid()
1316 res->id.idmap_id_u.gid = wksid->pid; in lookup_wksids_sid2pid()
1323 res->direction = wksid->direction; in lookup_wksids_sid2pid()
1324 res->info.how.map_type = IDMAP_MAP_TYPE_KNOWN_SID; in lookup_wksids_sid2pid()
1325 res->info.src = IDMAP_MAP_SRC_HARD_CODED; in lookup_wksids_sid2pid()
1340 lookup_wksids_pid2sid(idmap_mapping *req, idmap_id_res *res, int is_user) in lookup_wksids_pid2sid() argument
1348 if (res->id.idtype == IDMAP_SID) { in lookup_wksids_pid2sid()
1349 res->id.idtype = wksid->is_wuser ? IDMAP_USID : IDMAP_GSID; in lookup_wksids_pid2sid()
1351 res->id.idmap_id_u.sid.rid = wksid->rid; in lookup_wksids_pid2sid()
1354 res->id.idmap_id_u.sid.prefix = in lookup_wksids_pid2sid()
1358 res->id.idmap_id_u.sid.prefix = in lookup_wksids_pid2sid()
1363 if (res->id.idmap_id_u.sid.prefix == NULL) { in lookup_wksids_pid2sid()
1390 res->direction = wksid->direction; in lookup_wksids_pid2sid()
1391 res->info.how.map_type = IDMAP_MAP_TYPE_KNOWN_SID; in lookup_wksids_pid2sid()
1392 res->info.src = IDMAP_MAP_SRC_HARD_CODED; in lookup_wksids_pid2sid()
1501 lookup_cache_sid2pid(sqlite *cache, idmap_mapping *req, idmap_id_res *res) in lookup_cache_sid2pid() argument
1522 switch (res->id.idtype) { in lookup_cache_sid2pid()
1594 res->id.idtype = IDMAP_UID; in lookup_cache_sid2pid()
1595 res->id.idmap_id_u.uid = pid; in lookup_cache_sid2pid()
1597 res->id.idtype = IDMAP_GID; in lookup_cache_sid2pid()
1598 res->id.idmap_id_u.gid = pid; in lookup_cache_sid2pid()
1616 res->direction = IDMAP_DIRECTION_BI; in lookup_cache_sid2pid()
1628 res->direction = in lookup_cache_sid2pid()
1632 res->direction = IDMAP_DIRECTION_W2U; in lookup_cache_sid2pid()
1648 res->info.src = IDMAP_MAP_SRC_CACHE; in lookup_cache_sid2pid()
1649 res->info.how.map_type = strtoul(values[6], &end, 10); in lookup_cache_sid2pid()
1650 switch (res->info.how.map_type) { in lookup_cache_sid2pid()
1652 res->info.how.idmap_how_u.ad.dn = in lookup_cache_sid2pid()
1654 res->info.how.idmap_how_u.ad.attr = in lookup_cache_sid2pid()
1656 res->info.how.idmap_how_u.ad.value = in lookup_cache_sid2pid()
1661 res->info.how.idmap_how_u.nldap.dn = in lookup_cache_sid2pid()
1663 res->info.how.idmap_how_u.nldap.attr = in lookup_cache_sid2pid()
1665 res->info.how.idmap_how_u.nldap.value = in lookup_cache_sid2pid()
1670 res->info.how.idmap_how_u.rule.windomain = in lookup_cache_sid2pid()
1672 res->info.how.idmap_how_u.rule.winname = in lookup_cache_sid2pid()
1674 res->info.how.idmap_how_u.rule.unixname = in lookup_cache_sid2pid()
1676 res->info.how.idmap_how_u.rule.is_nt4 = in lookup_cache_sid2pid()
1678 res->info.how.idmap_how_u.rule.is_user = in lookup_cache_sid2pid()
1680 res->info.how.idmap_how_u.rule.is_wuser = in lookup_cache_sid2pid()
1694 res->info.how.idmap_how_u.idmu.dn = in lookup_cache_sid2pid()
1696 res->info.how.idmap_how_u.idmu.attr = in lookup_cache_sid2pid()
1698 res->info.how.idmap_how_u.idmu.value = in lookup_cache_sid2pid()
1820 lookup_name_cache(sqlite *cache, idmap_mapping *req, idmap_id_res *res) in lookup_name_cache() argument
1847 TRACE(req, res, "Not found in name cache"); in lookup_name_cache()
1849 TRACE(req, res, "Name cache lookup error=%d", retcode); in lookup_name_cache()
1879 TRACE(req, res, "Found in name cache"); in lookup_name_cache()
1896 idmap_id_res *res; in ad_lookup_batch_int() local
1950 res = &result->ids.ids_val[i]; in ad_lookup_batch_int()
1951 how = &res->info.how; in ad_lookup_batch_int()
1966 if (res->retcode != IDMAP_ERR_RETRIABLE_NET_ERR) in ad_lookup_batch_int()
1979 if (res->id.idtype == IDMAP_UID && in ad_lookup_batch_int()
1983 } else if (res->id.idtype == IDMAP_GID && in ad_lookup_batch_int()
1998 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
1999 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2016 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2017 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2036 &res->retcode); in ad_lookup_batch_int()
2051 &res->retcode); in ad_lookup_batch_int()
2060 if (res->id.idmap_id_u.sid.prefix != NULL && in ad_lookup_batch_int()
2063 res->retcode = IDMAP_SUCCESS; in ad_lookup_batch_int()
2067 if (res->id.idmap_id_u.sid.prefix != NULL) { in ad_lookup_batch_int()
2077 qs, res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2078 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2083 NULL, NULL, &res->retcode); in ad_lookup_batch_int()
2098 &res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2099 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2102 &res->retcode); in ad_lookup_batch_int()
2111 if (res->id.idtype == IDMAP_USID) in ad_lookup_batch_int()
2113 else if (res->id.idtype == IDMAP_GSID) in ad_lookup_batch_int()
2122 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2123 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2130 &res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2131 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2133 &req->id2.idtype, &res->retcode); in ad_lookup_batch_int()
2142 if (res->id.idtype == IDMAP_USID) in ad_lookup_batch_int()
2144 else if (res->id.idtype == IDMAP_GSID) in ad_lookup_batch_int()
2149 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2150 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2157 &res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2158 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2160 &req->id2.idtype, &res->retcode); in ad_lookup_batch_int()
2224 res = &result->ids.ids_val[i]; in ad_lookup_batch_int()
2253 res->retcode = retcode; in ad_lookup_batch_int()
2257 if (res->retcode == IDMAP_ERR_NOTFOUND) { in ad_lookup_batch_int()
2259 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2263 if (res->retcode == IDMAP_ERR_NOTFOUND) { in ad_lookup_batch_int()
2264 TRACE(req, res, "Not found in AD"); in ad_lookup_batch_int()
2267 if (res->retcode != IDMAP_SUCCESS) { in ad_lookup_batch_int()
2268 TRACE(req, res, "AD lookup error=%d", in ad_lookup_batch_int()
2269 res->retcode); in ad_lookup_batch_int()
2275 if (res->id.idtype == IDMAP_POSIXID) in ad_lookup_batch_int()
2276 res->id.idtype = IDMAP_UID; in ad_lookup_batch_int()
2283 res->id.idtype == IDMAP_UID) { in ad_lookup_batch_int()
2284 res->id.idmap_id_u.uid = posix_id; in ad_lookup_batch_int()
2285 res->direction = IDMAP_DIRECTION_BI; in ad_lookup_batch_int()
2286 res->info.how.map_type = in ad_lookup_batch_int()
2288 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2294 if (res->id.idtype == IDMAP_POSIXID) in ad_lookup_batch_int()
2295 res->id.idtype = IDMAP_GID; in ad_lookup_batch_int()
2302 res->id.idtype == IDMAP_GID) { in ad_lookup_batch_int()
2303 res->id.idmap_id_u.gid = posix_id; in ad_lookup_batch_int()
2304 res->direction = IDMAP_DIRECTION_BI; in ad_lookup_batch_int()
2305 res->info.how.map_type = in ad_lookup_batch_int()
2307 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2313 res->retcode = IDMAP_ERR_SID; in ad_lookup_batch_int()
2316 TRACE(req, res, "Found in AD"); in ad_lookup_batch_int()
2317 if (res->retcode == IDMAP_SUCCESS && in ad_lookup_batch_int()
2320 res->id.idmap_id_u.uid == IDMAP_SENTINEL_PID) && in ad_lookup_batch_int()
2321 NLDAP_MODE(res->id.idtype, state)) { in ad_lookup_batch_int()
2326 if (res->retcode != IDMAP_SUCCESS) { in ad_lookup_batch_int()
2327 if ((!(IDMAP_FATAL_ERROR(res->retcode))) && in ad_lookup_batch_int()
2328 res->id.idmap_id_u.sid.prefix == NULL && in ad_lookup_batch_int()
2339 if (res->retcode == in ad_lookup_batch_int()
2342 res->retcode = IDMAP_SUCCESS; in ad_lookup_batch_int()
2343 TRACE(req, res, in ad_lookup_batch_int()
2346 TRACE(req, res, in ad_lookup_batch_int()
2348 res->retcode = IDMAP_SUCCESS; in ad_lookup_batch_int()
2351 TRACE(req, res, "AD lookup error"); in ad_lookup_batch_int()
2359 if (res->id.idtype == IDMAP_SID) in ad_lookup_batch_int()
2360 res->id.idtype = type; in ad_lookup_batch_int()
2364 res->retcode = IDMAP_ERR_SID; in ad_lookup_batch_int()
2367 TRACE(req, res, "Found in AD"); in ad_lookup_batch_int()
2386 idmap_id_res *res; in ad_lookup_batch() local
2395 res = &result->ids.ids_val[i]; in ad_lookup_batch()
2399 res->retcode != IDMAP_SUCCESS) in ad_lookup_batch()
2403 res->retcode = IDMAP_ERR_RETRIABLE_NET_ERR; in ad_lookup_batch()
2414 res = &result->ids.ids_val[i]; in ad_lookup_batch()
2418 res->retcode = IDMAP_ERR_NO_ACTIVEDIRECTORY; in ad_lookup_batch()
2452 res = &result->ids.ids_val[j]; in ad_lookup_batch()
2456 res->retcode = IDMAP_ERR_DOMAIN_NOTFOUND; in ad_lookup_batch()
2535 idmap_id_res *res) in sid2pid_first_pass() argument
2541 res->id.idtype = req->id2.idtype; in sid2pid_first_pass()
2542 res->id.idmap_id_u.uid = IDMAP_SENTINEL_PID; in sid2pid_first_pass()
2543 res->direction = IDMAP_DIRECTION_UNDEF; in sid2pid_first_pass()
2577 retcode = lookup_wksids_sid2pid(req, res, &wksid); in sid2pid_first_pass()
2580 TRACE(req, res, "Hardwired mapping"); in sid2pid_first_pass()
2583 TRACE(req, res, in sid2pid_first_pass()
2590 TRACE(req, res, "Well-known account"); in sid2pid_first_pass()
2592 TRACE(req, res, "Not a well-known account"); in sid2pid_first_pass()
2595 retcode = lookup_localsid2pid(req, res); in sid2pid_first_pass()
2597 TRACE(req, res, "Local SID"); in sid2pid_first_pass()
2600 TRACE(req, res, in sid2pid_first_pass()
2604 TRACE(req, res, "Not a local SID"); in sid2pid_first_pass()
2630 TRACE(req, res, "Added default domain"); in sid2pid_first_pass()
2634 retcode = lookup_cache_sid2pid(state->cache, req, res); in sid2pid_first_pass()
2636 TRACE(req, res, "Found in mapping cache"); in sid2pid_first_pass()
2639 TRACE(req, res, "Mapping cache lookup error=%d", retcode); in sid2pid_first_pass()
2642 TRACE(req, res, "Not found in mapping cache"); in sid2pid_first_pass()
2658 retcode = lookup_name_cache(state->cache, req, res); in sid2pid_first_pass()
2660 if (res->id.idtype == IDMAP_POSIXID) { in sid2pid_first_pass()
2662 res->id.idtype = IDMAP_UID; in sid2pid_first_pass()
2664 res->id.idtype = IDMAP_GID; in sid2pid_first_pass()
2683 TRACE(req, res, "Found with LSA"); in sid2pid_first_pass()
2685 TRACE(req, res, "Not found with LSA"); in sid2pid_first_pass()
2687 TRACE(req, res, "LSA error %d", retcode); in sid2pid_first_pass()
2707 TRACE(req, res, "Found with LSA"); in sid2pid_first_pass()
2709 TRACE(req, res, "Not found with LSA"); in sid2pid_first_pass()
2711 TRACE(req, res, "LSA error %d", retcode); in sid2pid_first_pass()
2734 AD_OR_MIXED_MODE(res->id.idtype, state)) || in sid2pid_first_pass()
2735 (!wksid && res->id.idmap_id_u.uid == IDMAP_SENTINEL_PID && in sid2pid_first_pass()
2740 } else if (NLDAP_MODE(res->id.idtype, state)) { in sid2pid_first_pass()
2747 res->retcode = idmap_stat4prot(retcode); in sid2pid_first_pass()
2752 if (ARE_WE_DONE(req->direction) && res->retcode != IDMAP_SUCCESS) in sid2pid_first_pass()
2753 res->id.idmap_id_u.uid = UID_NOBODY; in sid2pid_first_pass()
2764 generate_localsid(idmap_mapping *req, idmap_id_res *res, int is_user, in generate_localsid() argument
2767 free(res->id.idmap_id_u.sid.prefix); in generate_localsid()
2768 res->id.idmap_id_u.sid.prefix = NULL; in generate_localsid()
2774 if (is_user && res->id.idtype == IDMAP_GSID) in generate_localsid()
2776 if (!is_user && res->id.idtype == IDMAP_USID) in generate_localsid()
2789 res->id.idmap_id_u.sid.prefix = in generate_localsid()
2791 if (res->id.idmap_id_u.sid.prefix == NULL) { in generate_localsid()
2797 res->id.idmap_id_u.sid.rid = in generate_localsid()
2800 res->direction = IDMAP_DIRECTION_BI; in generate_localsid()
2801 if (res->id.idtype == IDMAP_SID) in generate_localsid()
2802 res->id.idtype = is_user ? IDMAP_USID : IDMAP_GSID; in generate_localsid()
2805 res->info.how.map_type = IDMAP_MAP_TYPE_LOCAL_SID; in generate_localsid()
2806 res->info.src = IDMAP_MAP_SRC_ALGORITHMIC; in generate_localsid()
2819 lookup_localsid2pid(idmap_mapping *req, idmap_id_res *res) in lookup_localsid2pid() argument
2846 switch (res->id.idtype) { in lookup_localsid2pid()
2850 res->id.idmap_id_u.uid = rid - LOCALRID_UID_MIN; in lookup_localsid2pid()
2855 res->id.idmap_id_u.gid = rid - LOCALRID_GID_MIN; in lookup_localsid2pid()
2859 res->id.idmap_id_u.gid = rid - LOCALRID_GID_MIN; in lookup_localsid2pid()
2860 res->id.idtype = IDMAP_GID; in lookup_localsid2pid()
2862 res->id.idmap_id_u.uid = rid - LOCALRID_UID_MIN; in lookup_localsid2pid()
2863 res->id.idtype = IDMAP_UID; in lookup_localsid2pid()
2871 res->info.how.map_type = IDMAP_MAP_TYPE_LOCAL_SID; in lookup_localsid2pid()
2872 res->info.src = IDMAP_MAP_SRC_ALGORITHMIC; in lookup_localsid2pid()
3010 idmap_mapping *req, idmap_id_res *res) in name_based_mapping_sid2pid() argument
3019 idmap_namerule *rule = &res->info.how.idmap_how_u.rule; in name_based_mapping_sid2pid()
3042 switch (res->id.idtype) { in name_based_mapping_sid2pid()
3051 res->id.idtype = is_user ? IDMAP_UID : IDMAP_GID; in name_based_mapping_sid2pid()
3092 TRACE(req, res, "Matching rule: %s@%s -> %s", in name_based_mapping_sid2pid()
3110 TRACE(req, res, "Mapping inhibited"); in name_based_mapping_sid2pid()
3128 &res->id); in name_based_mapping_sid2pid()
3133 TRACE(req, res, in name_based_mapping_sid2pid()
3139 TRACE(req, res, in name_based_mapping_sid2pid()
3150 TRACE(req, res, "Looking up %s error=%d", in name_based_mapping_sid2pid()
3155 TRACE(req, res, "No matching rule"); in name_based_mapping_sid2pid()
3172 res->direction = in name_based_mapping_sid2pid()
3176 res->direction = IDMAP_DIRECTION_W2U; in name_based_mapping_sid2pid()
3183 TRACE(req, res, "UNIX name found"); in name_based_mapping_sid2pid()
3187 res->direction); in name_based_mapping_sid2pid()
3193 TRACE(req, res, "Rule processing error, code=%d", retcode); in name_based_mapping_sid2pid()
3200 res->info.how.map_type = IDMAP_MAP_TYPE_RULE_BASED; in name_based_mapping_sid2pid()
3201 res->info.src = IDMAP_MAP_SRC_NEW; in name_based_mapping_sid2pid()
3338 idmap_mapping *req, idmap_id_res *res) in dynamic_ephemeral_mapping() argument
3343 res->direction = IDMAP_DIRECTION_BI; in dynamic_ephemeral_mapping()
3345 if (IDMAP_ID_IS_EPHEMERAL(res->id.idmap_id_u.uid)) { in dynamic_ephemeral_mapping()
3346 res->info.how.map_type = IDMAP_MAP_TYPE_EPHEMERAL; in dynamic_ephemeral_mapping()
3347 res->info.src = IDMAP_MAP_SRC_CACHE; in dynamic_ephemeral_mapping()
3354 res->id.idmap_id_u.uid = next_pid; in dynamic_ephemeral_mapping()
3355 res->info.how.map_type = IDMAP_MAP_TYPE_EPHEMERAL; in dynamic_ephemeral_mapping()
3356 res->info.src = IDMAP_MAP_SRC_NEW; in dynamic_ephemeral_mapping()
3360 if (res->id.idtype == IDMAP_UID) { in dynamic_ephemeral_mapping()
3363 res->id.idmap_id_u.uid = next_pid; in dynamic_ephemeral_mapping()
3367 res->id.idmap_id_u.gid = next_pid; in dynamic_ephemeral_mapping()
3370 res->info.how.map_type = IDMAP_MAP_TYPE_EPHEMERAL; in dynamic_ephemeral_mapping()
3371 res->info.src = IDMAP_MAP_SRC_NEW; in dynamic_ephemeral_mapping()
3381 idmap_mapping *req, idmap_id_res *res) in sid2pid_second_pass() argument
3388 return (res->retcode); in sid2pid_second_pass()
3391 retcode = res->retcode; in sid2pid_second_pass()
3403 if (res->id.idtype == IDMAP_POSIXID) { in sid2pid_second_pass()
3404 res->id.idtype = IDMAP_UID; in sid2pid_second_pass()
3405 TRACE(req, res, "Assume unresolvable SID is user"); in sid2pid_second_pass()
3406 } else if (res->id.idtype == IDMAP_UID) { in sid2pid_second_pass()
3407 TRACE(req, res, "Must map unresolvable SID to user"); in sid2pid_second_pass()
3408 } else if (res->id.idtype == IDMAP_GID) { in sid2pid_second_pass()
3409 TRACE(req, res, "Must map unresolvable SID to group"); in sid2pid_second_pass()
3423 if (!IDMAP_ID_IS_EPHEMERAL(res->id.idmap_id_u.uid) && in sid2pid_second_pass()
3424 res->id.idmap_id_u.uid != IDMAP_SENTINEL_PID) { in sid2pid_second_pass()
3432 retcode2 = ns_lookup_bypid(res->id.idmap_id_u.uid, in sid2pid_second_pass()
3433 res->id.idtype == IDMAP_UID, &req->id2name); in sid2pid_second_pass()
3435 TRACE(req, res, in sid2pid_second_pass()
3439 TRACE(req, res, "Found UNIX name"); in sid2pid_second_pass()
3451 assert(res->id.idtype != IDMAP_POSIXID); in sid2pid_second_pass()
3452 if (AD_MODE(res->id.idtype, state)) in sid2pid_second_pass()
3453 res->direction = IDMAP_DIRECTION_BI; in sid2pid_second_pass()
3454 else if (NLDAP_MODE(res->id.idtype, state)) in sid2pid_second_pass()
3455 res->direction = IDMAP_DIRECTION_BI; in sid2pid_second_pass()
3456 else if (MIXED_MODE(res->id.idtype, state)) in sid2pid_second_pass()
3457 res->direction = IDMAP_DIRECTION_W2U; in sid2pid_second_pass()
3496 if ((AD_MODE(res->id.idtype, state) || in sid2pid_second_pass()
3497 MIXED_MODE(res->id.idtype, state)) && in sid2pid_second_pass()
3503 res->id.idtype == IDMAP_GID) || in sid2pid_second_pass()
3505 res->id.idtype == IDMAP_UID))) { in sid2pid_second_pass()
3506 TRACE(req, res, "Ignoring UNIX name found in AD"); in sid2pid_second_pass()
3509 res->id.idmap_id_u.uid = IDMAP_SENTINEL_PID; in sid2pid_second_pass()
3512 if (res->id.idmap_id_u.uid == IDMAP_SENTINEL_PID) { in sid2pid_second_pass()
3514 NULL, &res->id); in sid2pid_second_pass()
3527 TRACE(req, res, in sid2pid_second_pass()
3531 TRACE(req, res, "UNIX lookup"); in sid2pid_second_pass()
3538 if (res->info.how.map_type != IDMAP_MAP_TYPE_UNKNOWN) in sid2pid_second_pass()
3539 idmap_how_clear(&res->info.how); in sid2pid_second_pass()
3545 retcode = name_based_mapping_sid2pid(state, req, res); in sid2pid_second_pass()
3547 TRACE(req, res, "Rule-based mapping"); in sid2pid_second_pass()
3550 TRACE(req, res, "Rule-based mapping error=%d", retcode); in sid2pid_second_pass()
3556 retcode = dynamic_ephemeral_mapping(state, req, res); in sid2pid_second_pass()
3558 TRACE(req, res, "Ephemeral mapping"); in sid2pid_second_pass()
3561 TRACE(req, res, "Ephemeral mapping error=%d", retcode); in sid2pid_second_pass()
3566 res->retcode = idmap_stat4prot(retcode); in sid2pid_second_pass()
3567 if (res->retcode != IDMAP_SUCCESS) { in sid2pid_second_pass()
3569 res->id.idmap_id_u.uid = UID_NOBODY; in sid2pid_second_pass()
3578 idmap_mapping *req, idmap_id_res *res) in update_cache_pid2sid() argument
3596 if (res->retcode != IDMAP_SUCCESS) in update_cache_pid2sid()
3599 assert(res->direction != IDMAP_DIRECTION_UNDEF); in update_cache_pid2sid()
3601 assert(res->id.idtype != IDMAP_SID); in update_cache_pid2sid()
3620 TRACE(req, res, "Found UNIX name"); in update_cache_pid2sid()
3622 TRACE(req, res, "Getting UNIX name error=%d", retcode2); in update_cache_pid2sid()
3625 assert(res->info.how.map_type != IDMAP_MAP_TYPE_UNKNOWN); in update_cache_pid2sid()
3626 switch (res->info.how.map_type) { in update_cache_pid2sid()
3628 map_dn = res->info.how.idmap_how_u.ad.dn; in update_cache_pid2sid()
3629 map_attr = res->info.how.idmap_how_u.ad.attr; in update_cache_pid2sid()
3630 map_value = res->info.how.idmap_how_u.ad.value; in update_cache_pid2sid()
3634 map_dn = res->info.how.idmap_how_u.nldap.dn; in update_cache_pid2sid()
3635 map_attr = res->info.how.idmap_how_u.nldap.attr; in update_cache_pid2sid()
3636 map_value = res->info.how.idmap_how_u.nldap.value; in update_cache_pid2sid()
3640 map_windomain = res->info.how.idmap_how_u.rule.windomain; in update_cache_pid2sid()
3641 map_winname = res->info.how.idmap_how_u.rule.winname; in update_cache_pid2sid()
3642 map_unixname = res->info.how.idmap_how_u.rule.unixname; in update_cache_pid2sid()
3643 map_is_nt4 = res->info.how.idmap_how_u.rule.is_nt4; in update_cache_pid2sid()
3653 map_dn = res->info.how.idmap_how_u.idmu.dn; in update_cache_pid2sid()
3654 map_attr = res->info.how.idmap_how_u.idmu.attr; in update_cache_pid2sid()
3655 map_value = res->info.how.idmap_how_u.idmu.value; in update_cache_pid2sid()
3675 res->id.idmap_id_u.sid.prefix, res->id.idmap_id_u.sid.rid, in update_cache_pid2sid()
3678 (res->id.idtype == IDMAP_USID) ? 1 : 0, in update_cache_pid2sid()
3680 (res->direction == 0) ? "1" : NULL, in update_cache_pid2sid()
3681 res->info.how.map_type, map_dn, map_attr, map_value, in update_cache_pid2sid()
3708 res->id.idmap_id_u.sid.prefix, res->id.idmap_id_u.sid.rid, in update_cache_pid2sid()
3710 res->id.idtype, state->name_cache_timeout); in update_cache_pid2sid()
3728 idmap_mapping *req, idmap_id_res *res) in update_cache_sid2pid() argument
3746 if (res->retcode != IDMAP_SUCCESS) in update_cache_sid2pid()
3757 !IDMAP_ID_IS_EPHEMERAL(res->id.idmap_id_u.uid)) { in update_cache_sid2pid()
3779 assert(res->direction != IDMAP_DIRECTION_UNDEF); in update_cache_sid2pid()
3780 assert(res->id.idmap_id_u.uid != IDMAP_SENTINEL_PID); in update_cache_sid2pid()
3782 switch (res->info.how.map_type) { in update_cache_sid2pid()
3784 map_dn = res->info.how.idmap_how_u.ad.dn; in update_cache_sid2pid()
3785 map_attr = res->info.how.idmap_how_u.ad.attr; in update_cache_sid2pid()
3786 map_value = res->info.how.idmap_how_u.ad.value; in update_cache_sid2pid()
3790 map_dn = res->info.how.idmap_how_u.nldap.dn; in update_cache_sid2pid()
3791 map_attr = res->info.how.idmap_how_u.ad.attr; in update_cache_sid2pid()
3792 map_value = res->info.how.idmap_how_u.nldap.value; in update_cache_sid2pid()
3796 map_windomain = res->info.how.idmap_how_u.rule.windomain; in update_cache_sid2pid()
3797 map_winname = res->info.how.idmap_how_u.rule.winname; in update_cache_sid2pid()
3798 map_unixname = res->info.how.idmap_how_u.rule.unixname; in update_cache_sid2pid()
3799 map_is_nt4 = res->info.how.idmap_how_u.rule.is_nt4; in update_cache_sid2pid()
3806 map_dn = res->info.how.idmap_how_u.idmu.dn; in update_cache_sid2pid()
3807 map_attr = res->info.how.idmap_how_u.idmu.attr; in update_cache_sid2pid()
3808 map_value = res->info.how.idmap_how_u.idmu.value; in update_cache_sid2pid()
3826 res->id.idmap_id_u.uid, req->id2name, in update_cache_sid2pid()
3827 (res->id.idtype == IDMAP_UID) ? 1 : 0, in update_cache_sid2pid()
3830 (res->direction == 0) ? "1" : NULL, in update_cache_sid2pid()
3831 res->info.how.map_type, map_dn, map_attr, map_value, in update_cache_sid2pid()
3878 lookup_cache_pid2sid(sqlite *cache, idmap_mapping *req, idmap_id_res *res, in lookup_cache_pid2sid() argument
3945 switch (res->id.idtype) { in lookup_cache_pid2sid()
3952 if (res->id.idtype == IDMAP_USID && in lookup_cache_pid2sid()
3956 } else if (res->id.idtype == IDMAP_GSID && in lookup_cache_pid2sid()
3961 res->id.idtype = idtype; in lookup_cache_pid2sid()
3963 res->id.idmap_id_u.sid.rid = in lookup_cache_pid2sid()
3965 res->id.idmap_id_u.sid.prefix = strdup(values[0]); in lookup_cache_pid2sid()
3966 if (res->id.idmap_id_u.sid.prefix == NULL) { in lookup_cache_pid2sid()
3973 res->direction = in lookup_cache_pid2sid()
3977 res->direction = IDMAP_DIRECTION_U2W; in lookup_cache_pid2sid()
4003 res->info.src = IDMAP_MAP_SRC_CACHE; in lookup_cache_pid2sid()
4004 res->info.how.map_type = strtoul(values[6], &end, 10); in lookup_cache_pid2sid()
4005 switch (res->info.how.map_type) { in lookup_cache_pid2sid()
4007 res->info.how.idmap_how_u.ad.dn = in lookup_cache_pid2sid()
4009 res->info.how.idmap_how_u.ad.attr = in lookup_cache_pid2sid()
4011 res->info.how.idmap_how_u.ad.value = in lookup_cache_pid2sid()
4016 res->info.how.idmap_how_u.nldap.dn = in lookup_cache_pid2sid()
4018 res->info.how.idmap_how_u.nldap.attr = in lookup_cache_pid2sid()
4020 res->info.how.idmap_how_u.nldap.value = in lookup_cache_pid2sid()
4025 res->info.how.idmap_how_u.rule.windomain = in lookup_cache_pid2sid()
4027 res->info.how.idmap_how_u.rule.winname = in lookup_cache_pid2sid()
4029 res->info.how.idmap_how_u.rule.unixname = in lookup_cache_pid2sid()
4031 res->info.how.idmap_how_u.rule.is_nt4 = in lookup_cache_pid2sid()
4033 res->info.how.idmap_how_u.rule.is_user = in lookup_cache_pid2sid()
4035 res->info.how.idmap_how_u.rule.is_wuser = in lookup_cache_pid2sid()
4049 res->info.how.idmap_how_u.idmu.dn = in lookup_cache_pid2sid()
4051 res->info.how.idmap_how_u.idmu.attr = in lookup_cache_pid2sid()
4053 res->info.how.idmap_how_u.idmu.value = in lookup_cache_pid2sid()
4408 int is_user, idmap_mapping *req, idmap_id_res *res) in name_based_mapping_pid2sid() argument
4421 idmap_namerule *rule = &res->info.how.idmap_how_u.rule; in name_based_mapping_pid2sid()
4426 assert(res->id.idmap_id_u.sid.prefix == NULL); /* No SID either */ in name_based_mapping_pid2sid()
4458 TRACE(req, res, "Matching rule: %s -> %s@%s", in name_based_mapping_pid2sid()
4482 TRACE(req, res, "Mapping inhibited"); in name_based_mapping_pid2sid()
4493 want_wuser = res->id.idtype == IDMAP_USID ? 1 in name_based_mapping_pid2sid()
4494 : res->id.idtype == IDMAP_GSID ? 0 in name_based_mapping_pid2sid()
4500 TRACE(req, res, in name_based_mapping_pid2sid()
4505 TRACE(req, res, in name_based_mapping_pid2sid()
4514 &res->id.idmap_id_u.sid.prefix, in name_based_mapping_pid2sid()
4515 &res->id.idmap_id_u.sid.rid, in name_based_mapping_pid2sid()
4516 &res->id.idtype, req, 0); in name_based_mapping_pid2sid()
4522 TRACE(req, res, in name_based_mapping_pid2sid()
4527 TRACE(req, res, in name_based_mapping_pid2sid()
4533 TRACE(req, res, in name_based_mapping_pid2sid()
4547 TRACE(req, res, "No matching rule"); in name_based_mapping_pid2sid()
4562 res->direction = in name_based_mapping_pid2sid()
4566 res->direction = IDMAP_DIRECTION_U2W; in name_based_mapping_pid2sid()
4575 TRACE(req, res, "Windows name found"); in name_based_mapping_pid2sid()
4582 res->info.how.map_type = IDMAP_MAP_TYPE_RULE_BASED; in name_based_mapping_pid2sid()
4583 res->info.src = IDMAP_MAP_SRC_NEW; in name_based_mapping_pid2sid()
4650 idmap_id_res *res, int is_user) in pid2sid_first_pass() argument
4657 res->id.idtype = req->id2.idtype; in pid2sid_first_pass()
4658 res->direction = IDMAP_DIRECTION_UNDEF; in pid2sid_first_pass()
4675 TRACE(req, res, "Getting UNIX ID error=%d", retcode); in pid2sid_first_pass()
4679 TRACE(req, res, "Found UNIX ID"); in pid2sid_first_pass()
4683 retcode = lookup_wksids_pid2sid(req, res, is_user); in pid2sid_first_pass()
4685 TRACE(req, res, "Hardwired mapping"); in pid2sid_first_pass()
4688 TRACE(req, res, in pid2sid_first_pass()
4694 retcode = lookup_cache_pid2sid(state->cache, req, res, is_user); in pid2sid_first_pass()
4696 TRACE(req, res, "Found in mapping cache"); in pid2sid_first_pass()
4699 TRACE(req, res, in pid2sid_first_pass()
4703 TRACE(req, res, "Not found in mapping cache"); in pid2sid_first_pass()
4708 TRACE(req, res, "Shouldn't have an ephemeral ID here"); in pid2sid_first_pass()
4738 TRACE(req, res, in pid2sid_first_pass()
4743 TRACE(req, res, "Found UNIX name"); in pid2sid_first_pass()
4766 res->retcode = idmap_stat4prot(retcode); in pid2sid_first_pass()
4767 if (ARE_WE_DONE(req->direction) && res->retcode != IDMAP_SUCCESS) { in pid2sid_first_pass()
4769 retcode2 = generate_localsid(req, res, is_user, TRUE); in pid2sid_first_pass()
4771 TRACE(req, res, "Generate local SID"); in pid2sid_first_pass()
4773 TRACE(req, res, in pid2sid_first_pass()
4782 idmap_id_res *res, int is_user) in pid2sid_second_pass() argument
4790 return (res->retcode); in pid2sid_second_pass()
4793 retcode = res->retcode; in pid2sid_second_pass()
4809 if (res->id.idmap_id_u.sid.prefix == NULL) { in pid2sid_second_pass()
4810 TRACE(req, res, "Windows name but no SID"); in pid2sid_second_pass()
4815 res->direction = IDMAP_DIRECTION_BI; in pid2sid_second_pass()
4817 res->direction = IDMAP_DIRECTION_BI; in pid2sid_second_pass()
4819 res->direction = IDMAP_DIRECTION_BI; in pid2sid_second_pass()
4821 res->direction = IDMAP_DIRECTION_W2U; in pid2sid_second_pass()
4823 } else if (res->id.idmap_id_u.sid.prefix != NULL) { in pid2sid_second_pass()
4832 if (res->info.how.map_type != IDMAP_MAP_TYPE_UNKNOWN) in pid2sid_second_pass()
4833 idmap_how_clear(&res->info.how); in pid2sid_second_pass()
4840 TRACE(req, res, in pid2sid_second_pass()
4844 TRACE(req, res, "Found UNIX name"); in pid2sid_second_pass()
4849 TRACE(req, res, in pid2sid_second_pass()
4854 TRACE(req, res, "Found UNIX ID"); in pid2sid_second_pass()
4859 req, res); in pid2sid_second_pass()
4861 retcode = generate_localsid(req, res, is_user, FALSE); in pid2sid_second_pass()
4863 TRACE(req, res, "Generated local SID"); in pid2sid_second_pass()
4865 TRACE(req, res, in pid2sid_second_pass()
4872 res->retcode = idmap_stat4prot(retcode); in pid2sid_second_pass()
4873 if (res->retcode != IDMAP_SUCCESS) { in pid2sid_second_pass()
4880 retcode2 = generate_localsid(req, res, is_user, TRUE); in pid2sid_second_pass()
4882 TRACE(req, res, "Generate local SID"); in pid2sid_second_pass()
4884 TRACE(req, res, in pid2sid_second_pass()
4887 res->id.idtype = is_user ? IDMAP_USID : IDMAP_GSID; in pid2sid_second_pass()