]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/mountd/v4root.c
utils: Return status 0 on clean exits
[nfs-utils.git] / utils / mountd / v4root.c
index 57ee0b29ad7e6d504ad36426a1b37de67c249347..726b50dc61093a2fa926d131131ed59860b1ae8c 100644 (file)
@@ -62,6 +62,8 @@ void set_pseudofs_security(struct exportent *pseudo, struct exportent *source)
 
        if (source->e_flags & NFSEXP_INSECURE_PORT)
                pseudo->e_flags |= NFSEXP_INSECURE_PORT;
+       if ((source->e_flags & NFSEXP_ROOTSQUASH) == 0)
+               pseudo->e_flags &= ~NFSEXP_ROOTSQUASH;
        for (se = source->e_secinfo; se->flav; se++) {
                struct sec_entry *new;
 
@@ -92,7 +94,8 @@ v4root_create(char *path, nfs_export *export)
        exp = export_create(&eep, 0);
        if (exp == NULL)
                return NULL;
-       xlog(D_CALL, "v4root_create: path '%s'", exp->m_export.e_path);
+       xlog(D_CALL, "v4root_create: path '%s' flags 0x%x", 
+               exp->m_export.e_path, exp->m_export.e_flags);
        return &exp->m_export;
 }
 
@@ -150,13 +153,13 @@ static int v4root_add_parents(nfs_export *exp)
                                "pseudo export for '%s'", exp->m_export.e_path);
                return -ENOMEM;
        }
-       for (ptr = path + 1; ptr; ptr = strchr(ptr, '/')) {
+       for (ptr = path; ptr; ptr = strchr(ptr, '/')) {
                int ret;
                char saved;
 
                saved = *ptr;
                *ptr = '\0';
-               ret = pseudofs_update(hostname, path, exp);
+               ret = pseudofs_update(hostname, *path ? path : "/", exp);
                if (ret)
                        return ret;
                *ptr = saved;