From d743219a9ae8a0ec9978dcbdd81eb89b7fd707f4 Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Sep 01 2021 17:45:25 +0000 Subject: extdom: return LDAP_NO_SUCH_OBJECT if domains differ If a client sends a request to lookup an object from a given trusted domain by UID or GID and an object with matching ID is only found in a different domain the extdom should return LDAP_NO_SUCH_OBJECT to indicate to the client that the requested ID does not exists in the given domain. Resolves: https://pagure.io/freeipa/issue/8965 Reviewed-By: Rob Crittenden --- diff --git a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c index 5d97ff6..6f646b9 100644 --- a/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c +++ b/daemons/ipa-slapi-plugins/ipa-extdom-extop/ipa_extdom_common.c @@ -542,7 +542,9 @@ int pack_ber_user(struct ipa_extdom_ctx *ctx, if (strcasecmp(locat+1, domain_name) == 0 ) { locat[0] = '\0'; } else { - ret = LDAP_INVALID_SYNTAX; + /* The found object is from a different domain than requested, + * that means it does not exist in the requested domain */ + ret = LDAP_NO_SUCH_OBJECT; goto done; } } @@ -655,7 +657,9 @@ int pack_ber_group(enum response_types response_type, if (strcasecmp(locat+1, domain_name) == 0 ) { locat[0] = '\0'; } else { - ret = LDAP_INVALID_SYNTAX; + /* The found object is from a different domain than requested, + * that means it does not exist in the requested domain */ + ret = LDAP_NO_SUCH_OBJECT; goto done; } }