Lines Matching refs:res

175 	char *res = NULL;  in tolower_u8()  local
190 if ((res = malloc(outlen)) == NULL) in tolower_u8()
192 outs = res; in tolower_u8()
197 if ((res = realloc(res, outlen + inbytesleft)) == NULL) in tolower_u8()
201 outs = res + outlen - outbytesleft; in tolower_u8()
208 free(res); in tolower_u8()
209 res = NULL; in tolower_u8()
213 res[outlen - outbytesleft] = '\0'; in tolower_u8()
215 return (res); in tolower_u8()
1299 lookup_wksids_sid2pid(idmap_mapping *req, idmap_id_res *res, int *is_wksid) in lookup_wksids_sid2pid() argument
1310 req->id1.idmap_id_u.sid.rid, res->id.idtype); in lookup_wksids_sid2pid()
1313 res->id.idtype); in lookup_wksids_sid2pid()
1363 if (res->id.idtype == IDMAP_POSIXID) { in lookup_wksids_sid2pid()
1364 res->id.idtype = wksid->is_wuser ? IDMAP_UID : IDMAP_GID; in lookup_wksids_sid2pid()
1386 switch (res->id.idtype) { in lookup_wksids_sid2pid()
1388 res->id.idmap_id_u.uid = wksid->pid; in lookup_wksids_sid2pid()
1391 res->id.idmap_id_u.gid = wksid->pid; in lookup_wksids_sid2pid()
1398 res->direction = wksid->direction; in lookup_wksids_sid2pid()
1399 res->info.how.map_type = IDMAP_MAP_TYPE_KNOWN_SID; in lookup_wksids_sid2pid()
1400 res->info.src = IDMAP_MAP_SRC_HARD_CODED; in lookup_wksids_sid2pid()
1415 lookup_wksids_pid2sid(idmap_mapping *req, idmap_id_res *res, int is_user) in lookup_wksids_pid2sid() argument
1423 if (res->id.idtype == IDMAP_SID) { in lookup_wksids_pid2sid()
1424 res->id.idtype = wksid->is_wuser ? IDMAP_USID : IDMAP_GSID; in lookup_wksids_pid2sid()
1426 res->id.idmap_id_u.sid.rid = wksid->rid; in lookup_wksids_pid2sid()
1429 res->id.idmap_id_u.sid.prefix = in lookup_wksids_pid2sid()
1433 res->id.idmap_id_u.sid.prefix = in lookup_wksids_pid2sid()
1438 if (res->id.idmap_id_u.sid.prefix == NULL) { in lookup_wksids_pid2sid()
1465 res->direction = wksid->direction; in lookup_wksids_pid2sid()
1466 res->info.how.map_type = IDMAP_MAP_TYPE_KNOWN_SID; in lookup_wksids_pid2sid()
1467 res->info.src = IDMAP_MAP_SRC_HARD_CODED; in lookup_wksids_pid2sid()
1576 lookup_cache_sid2pid(sqlite *cache, idmap_mapping *req, idmap_id_res *res) in lookup_cache_sid2pid() argument
1597 switch (res->id.idtype) { in lookup_cache_sid2pid()
1669 res->id.idtype = IDMAP_UID; in lookup_cache_sid2pid()
1670 res->id.idmap_id_u.uid = pid; in lookup_cache_sid2pid()
1672 res->id.idtype = IDMAP_GID; in lookup_cache_sid2pid()
1673 res->id.idmap_id_u.gid = pid; in lookup_cache_sid2pid()
1691 res->direction = IDMAP_DIRECTION_BI; in lookup_cache_sid2pid()
1703 res->direction = in lookup_cache_sid2pid()
1707 res->direction = IDMAP_DIRECTION_W2U; in lookup_cache_sid2pid()
1723 res->info.src = IDMAP_MAP_SRC_CACHE; in lookup_cache_sid2pid()
1724 res->info.how.map_type = strtoul(values[6], &end, 10); in lookup_cache_sid2pid()
1725 switch (res->info.how.map_type) { in lookup_cache_sid2pid()
1727 res->info.how.idmap_how_u.ad.dn = in lookup_cache_sid2pid()
1729 res->info.how.idmap_how_u.ad.attr = in lookup_cache_sid2pid()
1731 res->info.how.idmap_how_u.ad.value = in lookup_cache_sid2pid()
1736 res->info.how.idmap_how_u.nldap.dn = in lookup_cache_sid2pid()
1738 res->info.how.idmap_how_u.nldap.attr = in lookup_cache_sid2pid()
1740 res->info.how.idmap_how_u.nldap.value = in lookup_cache_sid2pid()
1745 res->info.how.idmap_how_u.rule.windomain = in lookup_cache_sid2pid()
1747 res->info.how.idmap_how_u.rule.winname = in lookup_cache_sid2pid()
1749 res->info.how.idmap_how_u.rule.unixname = in lookup_cache_sid2pid()
1751 res->info.how.idmap_how_u.rule.is_nt4 = in lookup_cache_sid2pid()
1753 res->info.how.idmap_how_u.rule.is_user = in lookup_cache_sid2pid()
1755 res->info.how.idmap_how_u.rule.is_wuser = in lookup_cache_sid2pid()
1769 res->info.how.idmap_how_u.idmu.dn = in lookup_cache_sid2pid()
1771 res->info.how.idmap_how_u.idmu.attr = in lookup_cache_sid2pid()
1773 res->info.how.idmap_how_u.idmu.value = in lookup_cache_sid2pid()
1895 lookup_name_cache(sqlite *cache, idmap_mapping *req, idmap_id_res *res) in lookup_name_cache() argument
1922 TRACE(req, res, "Not found in name cache"); in lookup_name_cache()
1924 TRACE(req, res, "Name cache lookup error=%d", retcode); in lookup_name_cache()
1954 TRACE(req, res, "Found in name cache"); in lookup_name_cache()
1971 idmap_id_res *res; in ad_lookup_batch_int() local
2025 res = &result->ids.ids_val[i]; in ad_lookup_batch_int()
2026 how = &res->info.how; in ad_lookup_batch_int()
2041 if (res->retcode != IDMAP_ERR_RETRIABLE_NET_ERR) in ad_lookup_batch_int()
2054 if (res->id.idtype == IDMAP_UID && in ad_lookup_batch_int()
2058 } else if (res->id.idtype == IDMAP_GID && in ad_lookup_batch_int()
2073 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2074 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2091 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2092 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2111 &res->retcode); in ad_lookup_batch_int()
2126 &res->retcode); in ad_lookup_batch_int()
2135 if (res->id.idmap_id_u.sid.prefix != NULL && in ad_lookup_batch_int()
2138 res->retcode = IDMAP_SUCCESS; in ad_lookup_batch_int()
2142 if (res->id.idmap_id_u.sid.prefix != NULL) { in ad_lookup_batch_int()
2152 qs, res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2153 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2158 NULL, NULL, &res->retcode); in ad_lookup_batch_int()
2173 &res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2174 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2177 &res->retcode); in ad_lookup_batch_int()
2186 if (res->id.idtype == IDMAP_USID) in ad_lookup_batch_int()
2188 else if (res->id.idtype == IDMAP_GSID) in ad_lookup_batch_int()
2197 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2198 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2205 &res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2206 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2208 &req->id2.idtype, &res->retcode); in ad_lookup_batch_int()
2217 if (res->id.idtype == IDMAP_USID) in ad_lookup_batch_int()
2219 else if (res->id.idtype == IDMAP_GSID) in ad_lookup_batch_int()
2224 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2225 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2232 &res->id.idmap_id_u.sid.prefix, in ad_lookup_batch_int()
2233 &res->id.idmap_id_u.sid.rid, in ad_lookup_batch_int()
2235 &req->id2.idtype, &res->retcode); in ad_lookup_batch_int()
2299 res = &result->ids.ids_val[i]; in ad_lookup_batch_int()
2328 res->retcode = retcode; in ad_lookup_batch_int()
2332 if (res->retcode == IDMAP_ERR_NOTFOUND) { in ad_lookup_batch_int()
2334 idmap_how_clear(&res->info.how); in ad_lookup_batch_int()
2338 if (res->retcode == IDMAP_ERR_NOTFOUND) { in ad_lookup_batch_int()
2339 TRACE(req, res, "Not found in AD"); in ad_lookup_batch_int()
2342 if (res->retcode != IDMAP_SUCCESS) { in ad_lookup_batch_int()
2343 TRACE(req, res, "AD lookup error=%d", in ad_lookup_batch_int()
2344 res->retcode); in ad_lookup_batch_int()
2350 if (res->id.idtype == IDMAP_POSIXID) in ad_lookup_batch_int()
2351 res->id.idtype = IDMAP_UID; in ad_lookup_batch_int()
2358 res->id.idtype == IDMAP_UID) { in ad_lookup_batch_int()
2359 res->id.idmap_id_u.uid = posix_id; in ad_lookup_batch_int()
2360 res->direction = IDMAP_DIRECTION_BI; in ad_lookup_batch_int()
2361 res->info.how.map_type = in ad_lookup_batch_int()
2363 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2369 if (res->id.idtype == IDMAP_POSIXID) in ad_lookup_batch_int()
2370 res->id.idtype = IDMAP_GID; in ad_lookup_batch_int()
2377 res->id.idtype == IDMAP_GID) { in ad_lookup_batch_int()
2378 res->id.idmap_id_u.gid = posix_id; in ad_lookup_batch_int()
2379 res->direction = IDMAP_DIRECTION_BI; in ad_lookup_batch_int()
2380 res->info.how.map_type = in ad_lookup_batch_int()
2382 res->info.src = IDMAP_MAP_SRC_NEW; in ad_lookup_batch_int()
2388 res->retcode = IDMAP_ERR_SID; in ad_lookup_batch_int()
2391 TRACE(req, res, "Found in AD"); in ad_lookup_batch_int()
2392 if (res->retcode == IDMAP_SUCCESS && in ad_lookup_batch_int()
2395 res->id.idmap_id_u.uid == IDMAP_SENTINEL_PID) && in ad_lookup_batch_int()
2396 NLDAP_MODE(res->id.idtype, state)) { in ad_lookup_batch_int()
2401 if (res->retcode != IDMAP_SUCCESS) { in ad_lookup_batch_int()
2402 if ((!(IDMAP_FATAL_ERROR(res->retcode))) && in ad_lookup_batch_int()
2403 res->id.idmap_id_u.sid.prefix == NULL && in ad_lookup_batch_int()
2414 if (res->retcode == in ad_lookup_batch_int()
2417 res->retcode = IDMAP_SUCCESS; in ad_lookup_batch_int()
2418 TRACE(req, res, in ad_lookup_batch_int()
2421 TRACE(req, res, in ad_lookup_batch_int()
2423 res->retcode = IDMAP_SUCCESS; in ad_lookup_batch_int()
2426 TRACE(req, res, "AD lookup error"); in ad_lookup_batch_int()
2434 if (res->id.idtype == IDMAP_SID) in ad_lookup_batch_int()
2435 res->id.idtype = type; in ad_lookup_batch_int()
2439 res->retcode = IDMAP_ERR_SID; in ad_lookup_batch_int()
2442 TRACE(req, res, "Found in AD"); in ad_lookup_batch_int()
2461 idmap_id_res *res; in ad_lookup_batch() local
2470 res = &result->ids.ids_val[i]; in ad_lookup_batch()
2474 res->retcode != IDMAP_SUCCESS) in ad_lookup_batch()
2478 res->retcode = IDMAP_ERR_RETRIABLE_NET_ERR; in ad_lookup_batch()
2489 res = &result->ids.ids_val[i]; in ad_lookup_batch()
2493 res->retcode = IDMAP_ERR_NO_ACTIVEDIRECTORY; in ad_lookup_batch()
2527 res = &result->ids.ids_val[j]; in ad_lookup_batch()
2531 res->retcode = IDMAP_ERR_DOMAIN_NOTFOUND; in ad_lookup_batch()
2610 idmap_id_res *res) in sid2pid_first_pass() argument
2616 res->id.idtype = req->id2.idtype; in sid2pid_first_pass()
2617 res->id.idmap_id_u.uid = IDMAP_SENTINEL_PID; in sid2pid_first_pass()
2618 res->direction = IDMAP_DIRECTION_UNDEF; in sid2pid_first_pass()
2652 retcode = lookup_wksids_sid2pid(req, res, &wksid); in sid2pid_first_pass()
2655 TRACE(req, res, "Hardwired mapping"); in sid2pid_first_pass()
2658 TRACE(req, res, in sid2pid_first_pass()
2665 TRACE(req, res, "Well-known account"); in sid2pid_first_pass()
2667 TRACE(req, res, "Not a well-known account"); in sid2pid_first_pass()
2670 retcode = lookup_localsid2pid(req, res); in sid2pid_first_pass()
2672 TRACE(req, res, "Local SID"); in sid2pid_first_pass()
2675 TRACE(req, res, in sid2pid_first_pass()
2679 TRACE(req, res, "Not a local SID"); in sid2pid_first_pass()
2705 TRACE(req, res, "Added default domain"); in sid2pid_first_pass()
2709 retcode = lookup_cache_sid2pid(state->cache, req, res); in sid2pid_first_pass()
2711 TRACE(req, res, "Found in mapping cache"); in sid2pid_first_pass()
2714 TRACE(req, res, "Mapping cache lookup error=%d", retcode); in sid2pid_first_pass()
2717 TRACE(req, res, "Not found in mapping cache"); in sid2pid_first_pass()
2733 retcode = lookup_name_cache(state->cache, req, res); in sid2pid_first_pass()
2735 if (res->id.idtype == IDMAP_POSIXID) { in sid2pid_first_pass()
2737 res->id.idtype = IDMAP_UID; in sid2pid_first_pass()
2739 res->id.idtype = IDMAP_GID; in sid2pid_first_pass()
2758 TRACE(req, res, "Found with LSA"); in sid2pid_first_pass()
2760 TRACE(req, res, "Not found with LSA"); in sid2pid_first_pass()
2762 TRACE(req, res, "LSA error %d", retcode); in sid2pid_first_pass()
2782 TRACE(req, res, "Found with LSA"); in sid2pid_first_pass()
2784 TRACE(req, res, "Not found with LSA"); in sid2pid_first_pass()
2786 TRACE(req, res, "LSA error %d", retcode); in sid2pid_first_pass()
2809 AD_OR_MIXED_MODE(res->id.idtype, state)) || in sid2pid_first_pass()
2810 (!wksid && res->id.idmap_id_u.uid == IDMAP_SENTINEL_PID && in sid2pid_first_pass()
2815 } else if (NLDAP_MODE(res->id.idtype, state)) { in sid2pid_first_pass()
2822 res->retcode = idmap_stat4prot(retcode); in sid2pid_first_pass()
2827 if (ARE_WE_DONE(req->direction) && res->retcode != IDMAP_SUCCESS) in sid2pid_first_pass()
2828 res->id.idmap_id_u.uid = UID_NOBODY; in sid2pid_first_pass()
2839 generate_localsid(idmap_mapping *req, idmap_id_res *res, int is_user, in generate_localsid() argument
2842 free(res->id.idmap_id_u.sid.prefix); in generate_localsid()
2843 res->id.idmap_id_u.sid.prefix = NULL; in generate_localsid()
2849 if (is_user && res->id.idtype == IDMAP_GSID) in generate_localsid()
2851 if (!is_user && res->id.idtype == IDMAP_USID) in generate_localsid()
2864 res->id.idmap_id_u.sid.prefix = in generate_localsid()
2866 if (res->id.idmap_id_u.sid.prefix == NULL) { in generate_localsid()
2872 res->id.idmap_id_u.sid.rid = in generate_localsid()
2875 res->direction = IDMAP_DIRECTION_BI; in generate_localsid()
2876 if (res->id.idtype == IDMAP_SID) in generate_localsid()
2877 res->id.idtype = is_user ? IDMAP_USID : IDMAP_GSID; in generate_localsid()
2880 res->info.how.map_type = IDMAP_MAP_TYPE_LOCAL_SID; in generate_localsid()
2881 res->info.src = IDMAP_MAP_SRC_ALGORITHMIC; in generate_localsid()
2894 lookup_localsid2pid(idmap_mapping *req, idmap_id_res *res) in lookup_localsid2pid() argument
2921 switch (res->id.idtype) { in lookup_localsid2pid()
2925 res->id.idmap_id_u.uid = rid - LOCALRID_UID_MIN; in lookup_localsid2pid()
2930 res->id.idmap_id_u.gid = rid - LOCALRID_GID_MIN; in lookup_localsid2pid()
2934 res->id.idmap_id_u.gid = rid - LOCALRID_GID_MIN; in lookup_localsid2pid()
2935 res->id.idtype = IDMAP_GID; in lookup_localsid2pid()
2937 res->id.idmap_id_u.uid = rid - LOCALRID_UID_MIN; in lookup_localsid2pid()
2938 res->id.idtype = IDMAP_UID; in lookup_localsid2pid()
2946 res->info.how.map_type = IDMAP_MAP_TYPE_LOCAL_SID; in lookup_localsid2pid()
2947 res->info.src = IDMAP_MAP_SRC_ALGORITHMIC; in lookup_localsid2pid()
3085 idmap_mapping *req, idmap_id_res *res) in name_based_mapping_sid2pid() argument
3094 idmap_namerule *rule = &res->info.how.idmap_how_u.rule; in name_based_mapping_sid2pid()
3117 switch (res->id.idtype) { in name_based_mapping_sid2pid()
3126 res->id.idtype = is_user ? IDMAP_UID : IDMAP_GID; in name_based_mapping_sid2pid()
3167 TRACE(req, res, "Matching rule: %s@%s -> %s", in name_based_mapping_sid2pid()
3185 TRACE(req, res, "Mapping inhibited"); in name_based_mapping_sid2pid()
3203 &res->id); in name_based_mapping_sid2pid()
3208 TRACE(req, res, in name_based_mapping_sid2pid()
3214 TRACE(req, res, in name_based_mapping_sid2pid()
3225 TRACE(req, res, "Looking up %s error=%d", in name_based_mapping_sid2pid()
3230 TRACE(req, res, "No matching rule"); in name_based_mapping_sid2pid()
3247 res->direction = in name_based_mapping_sid2pid()
3251 res->direction = IDMAP_DIRECTION_W2U; in name_based_mapping_sid2pid()
3258 TRACE(req, res, "UNIX name found"); in name_based_mapping_sid2pid()
3262 res->direction); in name_based_mapping_sid2pid()
3268 TRACE(req, res, "Rule processing error, code=%d", retcode); in name_based_mapping_sid2pid()
3275 res->info.how.map_type = IDMAP_MAP_TYPE_RULE_BASED; in name_based_mapping_sid2pid()
3276 res->info.src = IDMAP_MAP_SRC_NEW; in name_based_mapping_sid2pid()
3413 idmap_mapping *req, idmap_id_res *res) in dynamic_ephemeral_mapping() argument
3418 res->direction = IDMAP_DIRECTION_BI; in dynamic_ephemeral_mapping()
3420 if (IDMAP_ID_IS_EPHEMERAL(res->id.idmap_id_u.uid)) { in dynamic_ephemeral_mapping()
3421 res->info.how.map_type = IDMAP_MAP_TYPE_EPHEMERAL; in dynamic_ephemeral_mapping()
3422 res->info.src = IDMAP_MAP_SRC_CACHE; in dynamic_ephemeral_mapping()
3429 res->id.idmap_id_u.uid = next_pid; in dynamic_ephemeral_mapping()
3430 res->info.how.map_type = IDMAP_MAP_TYPE_EPHEMERAL; in dynamic_ephemeral_mapping()
3431 res->info.src = IDMAP_MAP_SRC_NEW; in dynamic_ephemeral_mapping()
3435 if (res->id.idtype == IDMAP_UID) { in dynamic_ephemeral_mapping()
3438 res->id.idmap_id_u.uid = next_pid; in dynamic_ephemeral_mapping()
3442 res->id.idmap_id_u.gid = next_pid; in dynamic_ephemeral_mapping()
3445 res->info.how.map_type = IDMAP_MAP_TYPE_EPHEMERAL; in dynamic_ephemeral_mapping()
3446 res->info.src = IDMAP_MAP_SRC_NEW; in dynamic_ephemeral_mapping()
3456 idmap_mapping *req, idmap_id_res *res) in sid2pid_second_pass() argument
3463 return (res->retcode); in sid2pid_second_pass()
3466 retcode = res->retcode; in sid2pid_second_pass()
3478 if (res->id.idtype == IDMAP_POSIXID) { in sid2pid_second_pass()
3479 res->id.idtype = IDMAP_UID; in sid2pid_second_pass()
3480 TRACE(req, res, "Assume unresolvable SID is user"); in sid2pid_second_pass()
3481 } else if (res->id.idtype == IDMAP_UID) { in sid2pid_second_pass()
3482 TRACE(req, res, "Must map unresolvable SID to user"); in sid2pid_second_pass()
3483 } else if (res->id.idtype == IDMAP_GID) { in sid2pid_second_pass()
3484 TRACE(req, res, "Must map unresolvable SID to group"); in sid2pid_second_pass()
3498 if (!IDMAP_ID_IS_EPHEMERAL(res->id.idmap_id_u.uid) && in sid2pid_second_pass()
3499 res->id.idmap_id_u.uid != IDMAP_SENTINEL_PID) { in sid2pid_second_pass()
3507 retcode2 = ns_lookup_bypid(res->id.idmap_id_u.uid, in sid2pid_second_pass()
3508 res->id.idtype == IDMAP_UID, &req->id2name); in sid2pid_second_pass()
3510 TRACE(req, res, in sid2pid_second_pass()
3514 TRACE(req, res, "Found UNIX name"); in sid2pid_second_pass()
3526 assert(res->id.idtype != IDMAP_POSIXID); in sid2pid_second_pass()
3527 if (AD_MODE(res->id.idtype, state)) in sid2pid_second_pass()
3528 res->direction = IDMAP_DIRECTION_BI; in sid2pid_second_pass()
3529 else if (NLDAP_MODE(res->id.idtype, state)) in sid2pid_second_pass()
3530 res->direction = IDMAP_DIRECTION_BI; in sid2pid_second_pass()
3531 else if (MIXED_MODE(res->id.idtype, state)) in sid2pid_second_pass()
3532 res->direction = IDMAP_DIRECTION_W2U; in sid2pid_second_pass()
3571 if ((AD_MODE(res->id.idtype, state) || in sid2pid_second_pass()
3572 MIXED_MODE(res->id.idtype, state)) && in sid2pid_second_pass()
3578 res->id.idtype == IDMAP_GID) || in sid2pid_second_pass()
3580 res->id.idtype == IDMAP_UID))) { in sid2pid_second_pass()
3581 TRACE(req, res, "Ignoring UNIX name found in AD"); in sid2pid_second_pass()
3584 res->id.idmap_id_u.uid = IDMAP_SENTINEL_PID; in sid2pid_second_pass()
3587 if (res->id.idmap_id_u.uid == IDMAP_SENTINEL_PID) { in sid2pid_second_pass()
3589 NULL, &res->id); in sid2pid_second_pass()
3602 TRACE(req, res, in sid2pid_second_pass()
3606 TRACE(req, res, "UNIX lookup"); in sid2pid_second_pass()
3613 if (res->info.how.map_type != IDMAP_MAP_TYPE_UNKNOWN) in sid2pid_second_pass()
3614 idmap_how_clear(&res->info.how); in sid2pid_second_pass()
3620 retcode = name_based_mapping_sid2pid(state, req, res); in sid2pid_second_pass()
3622 TRACE(req, res, "Rule-based mapping"); in sid2pid_second_pass()
3625 TRACE(req, res, "Rule-based mapping error=%d", retcode); in sid2pid_second_pass()
3631 retcode = dynamic_ephemeral_mapping(state, req, res); in sid2pid_second_pass()
3633 TRACE(req, res, "Ephemeral mapping"); in sid2pid_second_pass()
3636 TRACE(req, res, "Ephemeral mapping error=%d", retcode); in sid2pid_second_pass()
3641 res->retcode = idmap_stat4prot(retcode); in sid2pid_second_pass()
3642 if (res->retcode != IDMAP_SUCCESS) { in sid2pid_second_pass()
3644 res->id.idmap_id_u.uid = UID_NOBODY; in sid2pid_second_pass()
3653 idmap_mapping *req, idmap_id_res *res) in update_cache_pid2sid() argument
3671 if (res->retcode != IDMAP_SUCCESS) in update_cache_pid2sid()
3674 assert(res->direction != IDMAP_DIRECTION_UNDEF); in update_cache_pid2sid()
3676 assert(res->id.idtype != IDMAP_SID); in update_cache_pid2sid()
3695 TRACE(req, res, "Found UNIX name"); in update_cache_pid2sid()
3697 TRACE(req, res, "Getting UNIX name error=%d", retcode2); in update_cache_pid2sid()
3700 assert(res->info.how.map_type != IDMAP_MAP_TYPE_UNKNOWN); in update_cache_pid2sid()
3701 switch (res->info.how.map_type) { in update_cache_pid2sid()
3703 map_dn = res->info.how.idmap_how_u.ad.dn; in update_cache_pid2sid()
3704 map_attr = res->info.how.idmap_how_u.ad.attr; in update_cache_pid2sid()
3705 map_value = res->info.how.idmap_how_u.ad.value; in update_cache_pid2sid()
3709 map_dn = res->info.how.idmap_how_u.nldap.dn; in update_cache_pid2sid()
3710 map_attr = res->info.how.idmap_how_u.nldap.attr; in update_cache_pid2sid()
3711 map_value = res->info.how.idmap_how_u.nldap.value; in update_cache_pid2sid()
3715 map_windomain = res->info.how.idmap_how_u.rule.windomain; in update_cache_pid2sid()
3716 map_winname = res->info.how.idmap_how_u.rule.winname; in update_cache_pid2sid()
3717 map_unixname = res->info.how.idmap_how_u.rule.unixname; in update_cache_pid2sid()
3718 map_is_nt4 = res->info.how.idmap_how_u.rule.is_nt4; in update_cache_pid2sid()
3728 map_dn = res->info.how.idmap_how_u.idmu.dn; in update_cache_pid2sid()
3729 map_attr = res->info.how.idmap_how_u.idmu.attr; in update_cache_pid2sid()
3730 map_value = res->info.how.idmap_how_u.idmu.value; in update_cache_pid2sid()
3750 res->id.idmap_id_u.sid.prefix, res->id.idmap_id_u.sid.rid, in update_cache_pid2sid()
3753 (res->id.idtype == IDMAP_USID) ? 1 : 0, in update_cache_pid2sid()
3755 (res->direction == 0) ? "1" : NULL, in update_cache_pid2sid()
3756 res->info.how.map_type, map_dn, map_attr, map_value, in update_cache_pid2sid()
3783 res->id.idmap_id_u.sid.prefix, res->id.idmap_id_u.sid.rid, in update_cache_pid2sid()
3785 res->id.idtype, state->name_cache_timeout); in update_cache_pid2sid()
3803 idmap_mapping *req, idmap_id_res *res) in update_cache_sid2pid() argument
3821 if (res->retcode != IDMAP_SUCCESS) in update_cache_sid2pid()
3832 !IDMAP_ID_IS_EPHEMERAL(res->id.idmap_id_u.uid)) { in update_cache_sid2pid()
3854 assert(res->direction != IDMAP_DIRECTION_UNDEF); in update_cache_sid2pid()
3855 assert(res->id.idmap_id_u.uid != IDMAP_SENTINEL_PID); in update_cache_sid2pid()
3857 switch (res->info.how.map_type) { in update_cache_sid2pid()
3859 map_dn = res->info.how.idmap_how_u.ad.dn; in update_cache_sid2pid()
3860 map_attr = res->info.how.idmap_how_u.ad.attr; in update_cache_sid2pid()
3861 map_value = res->info.how.idmap_how_u.ad.value; in update_cache_sid2pid()
3865 map_dn = res->info.how.idmap_how_u.nldap.dn; in update_cache_sid2pid()
3866 map_attr = res->info.how.idmap_how_u.ad.attr; in update_cache_sid2pid()
3867 map_value = res->info.how.idmap_how_u.nldap.value; in update_cache_sid2pid()
3871 map_windomain = res->info.how.idmap_how_u.rule.windomain; in update_cache_sid2pid()
3872 map_winname = res->info.how.idmap_how_u.rule.winname; in update_cache_sid2pid()
3873 map_unixname = res->info.how.idmap_how_u.rule.unixname; in update_cache_sid2pid()
3874 map_is_nt4 = res->info.how.idmap_how_u.rule.is_nt4; in update_cache_sid2pid()
3881 map_dn = res->info.how.idmap_how_u.idmu.dn; in update_cache_sid2pid()
3882 map_attr = res->info.how.idmap_how_u.idmu.attr; in update_cache_sid2pid()
3883 map_value = res->info.how.idmap_how_u.idmu.value; in update_cache_sid2pid()
3901 res->id.idmap_id_u.uid, req->id2name, in update_cache_sid2pid()
3902 (res->id.idtype == IDMAP_UID) ? 1 : 0, in update_cache_sid2pid()
3905 (res->direction == 0) ? "1" : NULL, in update_cache_sid2pid()
3906 res->info.how.map_type, map_dn, map_attr, map_value, in update_cache_sid2pid()
3953 lookup_cache_pid2sid(sqlite *cache, idmap_mapping *req, idmap_id_res *res, in lookup_cache_pid2sid() argument
4020 switch (res->id.idtype) { in lookup_cache_pid2sid()
4027 if (res->id.idtype == IDMAP_USID && in lookup_cache_pid2sid()
4031 } else if (res->id.idtype == IDMAP_GSID && in lookup_cache_pid2sid()
4036 res->id.idtype = idtype; in lookup_cache_pid2sid()
4038 res->id.idmap_id_u.sid.rid = in lookup_cache_pid2sid()
4040 res->id.idmap_id_u.sid.prefix = strdup(values[0]); in lookup_cache_pid2sid()
4041 if (res->id.idmap_id_u.sid.prefix == NULL) { in lookup_cache_pid2sid()
4048 res->direction = in lookup_cache_pid2sid()
4052 res->direction = IDMAP_DIRECTION_U2W; in lookup_cache_pid2sid()
4078 res->info.src = IDMAP_MAP_SRC_CACHE; in lookup_cache_pid2sid()
4079 res->info.how.map_type = strtoul(values[6], &end, 10); in lookup_cache_pid2sid()
4080 switch (res->info.how.map_type) { in lookup_cache_pid2sid()
4082 res->info.how.idmap_how_u.ad.dn = in lookup_cache_pid2sid()
4084 res->info.how.idmap_how_u.ad.attr = in lookup_cache_pid2sid()
4086 res->info.how.idmap_how_u.ad.value = in lookup_cache_pid2sid()
4091 res->info.how.idmap_how_u.nldap.dn = in lookup_cache_pid2sid()
4093 res->info.how.idmap_how_u.nldap.attr = in lookup_cache_pid2sid()
4095 res->info.how.idmap_how_u.nldap.value = in lookup_cache_pid2sid()
4100 res->info.how.idmap_how_u.rule.windomain = in lookup_cache_pid2sid()
4102 res->info.how.idmap_how_u.rule.winname = in lookup_cache_pid2sid()
4104 res->info.how.idmap_how_u.rule.unixname = in lookup_cache_pid2sid()
4106 res->info.how.idmap_how_u.rule.is_nt4 = in lookup_cache_pid2sid()
4108 res->info.how.idmap_how_u.rule.is_user = in lookup_cache_pid2sid()
4110 res->info.how.idmap_how_u.rule.is_wuser = in lookup_cache_pid2sid()
4124 res->info.how.idmap_how_u.idmu.dn = in lookup_cache_pid2sid()
4126 res->info.how.idmap_how_u.idmu.attr = in lookup_cache_pid2sid()
4128 res->info.how.idmap_how_u.idmu.value = in lookup_cache_pid2sid()
4484 int is_user, idmap_mapping *req, idmap_id_res *res) in name_based_mapping_pid2sid() argument
4497 idmap_namerule *rule = &res->info.how.idmap_how_u.rule; in name_based_mapping_pid2sid()
4502 assert(res->id.idmap_id_u.sid.prefix == NULL); /* No SID either */ in name_based_mapping_pid2sid()
4534 TRACE(req, res, "Matching rule: %s -> %s@%s", in name_based_mapping_pid2sid()
4558 TRACE(req, res, "Mapping inhibited"); in name_based_mapping_pid2sid()
4569 want_wuser = res->id.idtype == IDMAP_USID ? 1 in name_based_mapping_pid2sid()
4570 : res->id.idtype == IDMAP_GSID ? 0 in name_based_mapping_pid2sid()
4576 TRACE(req, res, in name_based_mapping_pid2sid()
4581 TRACE(req, res, in name_based_mapping_pid2sid()
4590 &res->id.idmap_id_u.sid.prefix, in name_based_mapping_pid2sid()
4591 &res->id.idmap_id_u.sid.rid, in name_based_mapping_pid2sid()
4592 &res->id.idtype, req, 0); in name_based_mapping_pid2sid()
4598 TRACE(req, res, in name_based_mapping_pid2sid()
4603 TRACE(req, res, in name_based_mapping_pid2sid()
4609 TRACE(req, res, in name_based_mapping_pid2sid()
4623 TRACE(req, res, "No matching rule"); in name_based_mapping_pid2sid()
4638 res->direction = in name_based_mapping_pid2sid()
4642 res->direction = IDMAP_DIRECTION_U2W; in name_based_mapping_pid2sid()
4651 TRACE(req, res, "Windows name found"); in name_based_mapping_pid2sid()
4658 res->info.how.map_type = IDMAP_MAP_TYPE_RULE_BASED; in name_based_mapping_pid2sid()
4659 res->info.src = IDMAP_MAP_SRC_NEW; in name_based_mapping_pid2sid()
4726 idmap_id_res *res, int is_user) in pid2sid_first_pass() argument
4733 res->id.idtype = req->id2.idtype; in pid2sid_first_pass()
4734 res->direction = IDMAP_DIRECTION_UNDEF; in pid2sid_first_pass()
4751 TRACE(req, res, "Getting UNIX ID error=%d", retcode); in pid2sid_first_pass()
4755 TRACE(req, res, "Found UNIX ID"); in pid2sid_first_pass()
4759 retcode = lookup_wksids_pid2sid(req, res, is_user); in pid2sid_first_pass()
4761 TRACE(req, res, "Hardwired mapping"); in pid2sid_first_pass()
4764 TRACE(req, res, in pid2sid_first_pass()
4770 retcode = lookup_cache_pid2sid(state->cache, req, res, is_user); in pid2sid_first_pass()
4772 TRACE(req, res, "Found in mapping cache"); in pid2sid_first_pass()
4775 TRACE(req, res, in pid2sid_first_pass()
4779 TRACE(req, res, "Not found in mapping cache"); in pid2sid_first_pass()
4784 TRACE(req, res, "Shouldn't have an ephemeral ID here"); in pid2sid_first_pass()
4814 TRACE(req, res, in pid2sid_first_pass()
4819 TRACE(req, res, "Found UNIX name"); in pid2sid_first_pass()
4842 res->retcode = idmap_stat4prot(retcode); in pid2sid_first_pass()
4843 if (ARE_WE_DONE(req->direction) && res->retcode != IDMAP_SUCCESS) { in pid2sid_first_pass()
4845 retcode2 = generate_localsid(req, res, is_user, TRUE); in pid2sid_first_pass()
4847 TRACE(req, res, "Generate local SID"); in pid2sid_first_pass()
4849 TRACE(req, res, in pid2sid_first_pass()
4858 idmap_id_res *res, int is_user) in pid2sid_second_pass() argument
4866 return (res->retcode); in pid2sid_second_pass()
4869 retcode = res->retcode; in pid2sid_second_pass()
4885 if (res->id.idmap_id_u.sid.prefix == NULL) { in pid2sid_second_pass()
4886 TRACE(req, res, "Windows name but no SID"); in pid2sid_second_pass()
4891 res->direction = IDMAP_DIRECTION_BI; in pid2sid_second_pass()
4893 res->direction = IDMAP_DIRECTION_BI; in pid2sid_second_pass()
4895 res->direction = IDMAP_DIRECTION_BI; in pid2sid_second_pass()
4897 res->direction = IDMAP_DIRECTION_W2U; in pid2sid_second_pass()
4899 } else if (res->id.idmap_id_u.sid.prefix != NULL) { in pid2sid_second_pass()
4908 if (res->info.how.map_type != IDMAP_MAP_TYPE_UNKNOWN) in pid2sid_second_pass()
4909 idmap_how_clear(&res->info.how); in pid2sid_second_pass()
4916 TRACE(req, res, in pid2sid_second_pass()
4920 TRACE(req, res, "Found UNIX name"); in pid2sid_second_pass()
4925 TRACE(req, res, in pid2sid_second_pass()
4930 TRACE(req, res, "Found UNIX ID"); in pid2sid_second_pass()
4935 req, res); in pid2sid_second_pass()
4937 retcode = generate_localsid(req, res, is_user, FALSE); in pid2sid_second_pass()
4939 TRACE(req, res, "Generated local SID"); in pid2sid_second_pass()
4941 TRACE(req, res, in pid2sid_second_pass()
4948 res->retcode = idmap_stat4prot(retcode); in pid2sid_second_pass()
4949 if (res->retcode != IDMAP_SUCCESS) { in pid2sid_second_pass()
4956 retcode2 = generate_localsid(req, res, is_user, TRUE); in pid2sid_second_pass()
4958 TRACE(req, res, "Generate local SID"); in pid2sid_second_pass()
4960 TRACE(req, res, in pid2sid_second_pass()
4963 res->id.idtype = is_user ? IDMAP_USID : IDMAP_GSID; in pid2sid_second_pass()