]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mountd/mountd.c
There were 2 things wrong with auth flavour ordering:
[nfs-utils.git] / utils / mountd / mountd.c
index 4a5058821ecf620e044a8d8544a36be4375348a2..8137f7f7329f40d1cbab352c23ff311e34acee06 100644 (file)
@@ -203,9 +203,8 @@ mount_dump_1_svc(struct svc_req *rqstp, void *argp, mountlist *res)
        struct sockaddr_in *addr =
                (struct sockaddr_in *) svc_getcaller(rqstp->rq_xprt);
 
-       if ((*res = mountlist_list()) == NULL)
-               xlog(L_WARNING, "dump request from %s failed.",
-                       inet_ntoa(addr->sin_addr));
+       xlog(D_CALL, "dump request from %s.", inet_ntoa(addr->sin_addr));
+       *res = mountlist_list();
 
        return 1;
 }
@@ -254,9 +253,8 @@ mount_export_1_svc(struct svc_req *rqstp, void *argp, exports *resp)
        struct sockaddr_in *addr =
                (struct sockaddr_in *) svc_getcaller(rqstp->rq_xprt);
 
-       if ((*resp = get_exportlist()) == NULL)
-               xlog(L_WARNING, "export request from %s failed.",
-                       inet_ntoa(addr->sin_addr));
+       xlog(D_CALL, "export request from %s.", inet_ntoa(addr->sin_addr));
+       *resp = get_exportlist();
                
        return 1;
 }
@@ -267,9 +265,9 @@ mount_exportall_1_svc(struct svc_req *rqstp, void *argp, exports *resp)
        struct sockaddr_in *addr =
                (struct sockaddr_in *) svc_getcaller(rqstp->rq_xprt);
 
-       if ((*resp = get_exportlist()) == NULL)
-               xlog(L_WARNING, "exportall request from %s failed.",
-                       inet_ntoa(addr->sin_addr));
+       xlog(D_CALL, "exportall request from %s.", inet_ntoa(addr->sin_addr));
+       *resp = get_exportlist();
+
        return 1;
 }
 
@@ -344,7 +342,14 @@ mount_mnt_3_svc(struct svc_req *rqstp, dirpath *path, mountres3 *res)
 #define AUTH_GSS_KRB5 390003
 #define AUTH_GSS_KRB5I 390004
 #define AUTH_GSS_KRB5P 390005
-       static int      flavors[] = { AUTH_NULL, AUTH_UNIX, AUTH_GSS_KRB5, AUTH_GSS_KRB5I, AUTH_GSS_KRB5P};
+       static int      flavors[] = { AUTH_UNIX, AUTH_GSS_KRB5, AUTH_GSS_KRB5I, AUTH_GSS_KRB5P};
+       /*
+        * We should advertise the preferred flavours first. (See RFC 2623
+        * section 2.7.) AUTH_UNIX is arbitrarily ranked over the GSS's.
+        * AUTH_NULL is dropped from the list to avoid backward compatibility
+        * issue with older Linux clients, who inspect the list in reversed
+        * order.
+        */
        struct nfs_fh_len *fh;
 
        xlog(D_CALL, "MNT3(%s) called", *path);