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

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

 



Applied, with some fixes:

On Tue, Mar 26, 2019 at 07:41:09PM +0530, Kenneth D'souza wrote:
> 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

Just skip it silently, there's not need to print anything.

>  ## 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);

So let's just do a "continue" here, as above.  Also notice we usually
leave a space after "if".

--b.

> +		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