All of lore.kernel.org
 help / color / mirror / Atom feed
From: faizan husain <faizanh@linux.vnet.ibm.com>
To: Jim Rees <rees@umich.edu>
Cc: linux-nfs@vger.kernel.org, Frank S Filz <ffilz@us.ibm.com>,
	jvrao@linux.vnet.ibm.com
Subject: Re: [PATCH] nfs4-acl-tools : nfs4_setfacl' failed with unexpected messages if the format of the input file is incorrect.
Date: Thu, 30 Jun 2011 11:37:01 +0530	[thread overview]
Message-ID: <4E0C1285.1060601@linux.vnet.ibm.com> (raw)
In-Reply-To: <20110629121854.GA5105@merit.edu>

On Wednesday 29 June 2011 05:48 PM, Jim Rees wrote:
> faizan husain wrote:
>
>    On RHEL5.5 and above releases,
>    read ACL entries to set from file leads to a segmentation fault on pp64,
>    more over the same problem does not show up for x86_64 architecture.
>
> ...
>
>    diff --git a/libnfs4acl/nfs4_ace_from_string.c
>    b/libnfs4acl/nfs4_ace_from_string.c
>    index 9d877fb..1cc220e 100644
>    --- a/libnfs4acl/nfs4_ace_from_string.c
>    +++ b/libnfs4acl/nfs4_ace_from_string.c
>    @@ -125,7 +125,6 @@ parse_alloc_fields(char *buf, char *fields[NUMFIELDS])
>
>            return 0;
>     out_free:
>    -       free_fields(fields);
>            return -ENOMEM;
>     }
>
> If this fix is correct, shouldn't the name of the label be changed?  Better
> yet eliminate the gotos and label.
>
> However, I don't think the fix is correct.  I suspect you need a test for
> strsep() returning NULL.
I have tried strsep() returning NULL but without any success,
have figured out why double free error was coming leading to 
segmentation fault.

problem was this part of code in parse_alloc_fields() function:
if (count != 3)
          goto out_free;
at this point memory is not allocated for fields leading to double free 
of memory once inside parse_alloc_fields() and again inside 
nfs4_ace_from_string().

instead we can change the  code:
if (count != 3)
     return -EINVAL; /*Invalid argument*/

This look to me as more foolproof solution.
what do you say?

Signed-off-by: faizan <faizan.husain@.in.ibm.com>
---
  libnfs4acl/nfs4_ace_from_string.c |    2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/libnfs4acl/nfs4_ace_from_string.c 
b/libnfs4acl/nfs4_ace_from_string.c
index 9d877fb..6f1e200 100644
--- a/libnfs4acl/nfs4_ace_from_string.c
+++ b/libnfs4acl/nfs4_ace_from_string.c
@@ -107,7 +107,7 @@ parse_alloc_fields(char *buf, char *fields[NUMFIELDS])
                         count++;
         }
         if (count != 3)
-               goto out_free;
+               return -EINVAL;

         for (i = 0; i < NUMFIELDS; i++) {
                 field = strsep(&buf, ":");
--
1.7.1

Thanks
Faizan



  reply	other threads:[~2011-06-30  6:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-29  7:21 [PATCH] nfs4-acl-tools : nfs4_setfacl' failed with unexpected messages if the format of the input file is incorrect faizan husain
2011-06-29 12:18 ` Jim Rees
2011-06-30  6:07   ` faizan husain [this message]
2011-06-30 11:51     ` Jim Rees
2011-06-30 13:33       ` faizan husain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E0C1285.1060601@linux.vnet.ibm.com \
    --to=faizanh@linux.vnet.ibm.com \
    --cc=ffilz@us.ibm.com \
    --cc=jvrao@linux.vnet.ibm.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=rees@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.