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 19:03:26 +0530 [thread overview]
Message-ID: <4E0C7B26.9030807@linux.vnet.ibm.com> (raw)
In-Reply-To: <20110630115156.GA2347@merit.edu>
On Thursday 30 June 2011 05:21 PM, Jim Rees wrote:
> faizan husain wrote:
>
> 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?
>
> That looks correct. It should return EINVAL here, and there is no need to
> free. But I don't see why it fixes your segfault. fields[] should be all
> NULL at this point, so free_fields shouldn't do anything.
>
> The test in free_fields() is redundant, since free(NULL) doesn't do
> anything. But it could be made more foolproof by zeroing the array so you
> can't get a double free:
>
> void
> free_fields(char *fields[NUMFIELDS])
> {
> int i;
>
> for (i = 0; i< NUMFIELDS; i++) {
> free(fields[i]);
> fields[i] = NULL;
> }
> }
yeah that could be done to make it more foolproof.
here is the final patch:
From 6cd5263027e3fa5cf18756aa9db108dcdb2367d5 Mon Sep 17 00:00:00 2001
From: faizan <faizan.husain@in.ibm.com>
Date: Thu, 30 Jun 2011 18:55:28 +0530
Subject: [PATCH][BUILD]] FIX - 'nfs4_setfacl' failed with unexpected
messages if
the format of the input file is incorrect.
Signed-off-by: faizan <faizan.husain@in.ibm.com>
---
libnfs4acl/nfs4_ace_from_string.c | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/libnfs4acl/nfs4_ace_from_string.c
b/libnfs4acl/nfs4_ace_from_string.c
index 9d877fb..b74b1a9 100644
--- a/libnfs4acl/nfs4_ace_from_string.c
+++ b/libnfs4acl/nfs4_ace_from_string.c
@@ -86,9 +86,10 @@ free_fields(char *fields[NUMFIELDS])
{
int i;
- for (i = 0; i < NUMFIELDS; i++)
- if (fields[i] != NULL)
- free(fields[i]);
+ for (i = 0; i < NUMFIELDS; i++) {
+ free(fields[i]);
+ fields[i] = NULL;
+ }
}
int
@@ -107,7 +108,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
prev parent reply other threads:[~2011-06-30 13:33 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
2011-06-30 11:51 ` Jim Rees
2011-06-30 13:33 ` faizan husain [this message]
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=4E0C7B26.9030807@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.