[PATCH] nfs4_setfacl: Skip comment field while reading ACE(s).

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



With commit 6630629bb661a7f48fb9856f7fd9616ce1499efa an additional field for filename
was added due to which nfs4_setfacl failed to handle comments while reading ACE(s)
from nfs4_getfacl output.
This patch resolves the issue by skipping comment header.

 With fix:

 $ nfs4_setfacl --test -s "$(nfs4_getfacl  file1)" file2
 Skipping comment # file: file1
 ## Test mode only - the resulting ACL for "/test/file2":
 A::OWNER@:rwatTcCy
 A:g:GROUP@:rtcy
 A::EVERYONE@:rtcy

 Without fix:

 $ nfs4_setfacl --test -s "$(nfs4_getfacl  file1)" file2
 Failed while inserting ACE(s).

Signed-off-by: Kenneth D'souza <kdsouza@xxxxxxxxxx>
---
 libnfs4acl/nfs4_insert_string_aces.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/libnfs4acl/nfs4_insert_string_aces.c b/libnfs4acl/nfs4_insert_string_aces.c
index 5a482d5..50b7bbf 100644
--- a/libnfs4acl/nfs4_insert_string_aces.c
+++ b/libnfs4acl/nfs4_insert_string_aces.c
@@ -45,21 +45,25 @@ int nfs4_insert_string_aces(struct nfs4_acl *acl, const char *acl_spec, unsigned
 	if ((s = sp = strdup(acl_spec)) == NULL)
 		goto out_failed;
 
+
 	while ((ssp = strsep(&sp, ",\t\n\r")) != NULL) {
 		if (!strlen(ssp))
 			continue;
 
-		if ((ace = nfs4_ace_from_string(ssp, acl->is_directory)) == NULL)
-			goto out_failed;
+		if(*ssp == '#')
+			printf("Skipping comment %s\n", ssp);
+		else {
+			if ((ace = nfs4_ace_from_string(ssp, acl->is_directory)) == NULL)
+				goto out_failed;
 
-		if (nfs4_insert_ace_at(acl, ace, index++)) {
-			free(ace);
-			goto out_failed;
+			if (nfs4_insert_ace_at(acl, ace, index++)) {
+				free(ace);
+				goto out_failed;
+			}
 		}
 	}
 	if (acl->naces == 0)
 		goto out_failed;
-
 out:
 	if (s)
 		free(s);
-- 
2.20.1




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux