s3:srv_epmapper: fix logic in endpoints_match()
authorStefan Metzmacher <metze@samba.org>
Fri, 31 Jan 2014 22:20:05 +0000 (23:20 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 11 Feb 2014 15:20:30 +0000 (16:20 +0100)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
source3/rpc_server/epmapper/srv_epmapper.c

index cfa233ca4b5bfeccee35ac97bee122e440ca6255..758a48bee155322d66a17739d503b83898fc640e 100644 (file)
@@ -134,22 +134,34 @@ static bool endpoints_match(const struct dcerpc_binding *ep1,
                return false;
        }
 
-       if (!ep1->endpoint || !ep2->endpoint) {
-               return ep1->endpoint == ep2->endpoint;
+       if (!ep1->endpoint && ep2->endpoint) {
+               return false;
        }
 
-       if (!strequal(ep1->endpoint, ep2->endpoint)) {
+       if (ep1->endpoint && !ep2->endpoint) {
                return false;
        }
 
-       if (!ep1->host || !ep2->host) {
-               return ep1->endpoint == ep2->endpoint;
+       if (ep1->endpoint && ep2->endpoint) {
+               if (!strequal(ep1->endpoint, ep2->endpoint)) {
+                       return false;
+               }
+       }
+
+       if (!ep1->host && ep2->host) {
+               return false;
        }
 
-       if (!strequal(ep1->host, ep2->host)) {
+       if (ep1->host && !ep2->host) {
                return false;
        }
 
+       if (ep1->host && ep2->host) {
+               if (!strequal(ep1->host, ep2->host)) {
+                       return false;
+               }
+       }
+
        return true;
 }