mountd: auth_unix_ip should downcall on error to prevent hangs
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 28 Nov 2012 14:11:29 +0000 (09:11 -0500)
committerSteve Dickson <steved@redhat.com>
Wed, 28 Nov 2012 14:33:08 +0000 (09:33 -0500)
Since bf6a4febaa78bf188896b7b5b02c46562dd08b70 "mountd: handle
allocation failures in auth_unix_ip upcall", a failure to map the
address of an incoming client to a name could result in a hang.

We should be responding with an error in the case, not just skipping the
downcall and leaving everybody hanging.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
utils/mountd/cache.c

index e950ec6..c13f305 100644 (file)
@@ -109,12 +109,10 @@ static void auth_unix_ip(FILE *f)
                struct addrinfo *ai = NULL;
 
                ai = client_resolve(tmp->ai_addr);
-               if (ai == NULL)
-                       goto out;
-               client = client_compose(ai);
-               freeaddrinfo(ai);
-               if (!client)
-                       goto out;
+               if (ai) {
+                       client = client_compose(ai);
+                       freeaddrinfo(ai);
+               }
        }
        qword_print(f, "nfsd");
        qword_print(f, ipaddr);
@@ -127,7 +125,6 @@ static void auth_unix_ip(FILE *f)
        xlog(D_CALL, "auth_unix_ip: client %p '%s'", client, client?client: "DEFAULT");
 
        free(client);
-out:
        freeaddrinfo(tmp);
 
 }