Patchwork [v2] hw/virtio-9p-local.c: Remove unnecessary null char in symlink file

login
register
mail settings
Submitter Harsh Prateek Bora
Date Dec. 21, 2010, 5:20 a.m.
Message ID <1292908848-8381-1-git-send-email-harsh@linux.vnet.ibm.com>
Download mbox | patch
Permalink /patch/76260/
State New
Headers show

Comments

Harsh Prateek Bora - Dec. 21, 2010, 5:20 a.m.
This patch removes the addition of null char in symlink file
which is being appended to file in case of mapped security model.
Without this patch, the extra null char causes LTP testcase lstat03
to fail and hence this fix is required.

v2:
- Description updated to mention about LTP lstat testcase 
  failure without this patch.

Signed-off-by: Harsh Prateek Bora <harsh@linux.vnet.ibm.com>
---
 hw/virtio-9p-local.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Stefan Hajnoczi - Dec. 21, 2010, 7:51 a.m.
On Tue, Dec 21, 2010 at 5:20 AM, Harsh Prateek Bora
<harsh@linux.vnet.ibm.com> wrote:
> This patch removes the addition of null char in symlink file
> which is being appended to file in case of mapped security model.
> Without this patch, the extra null char causes LTP testcase lstat03
> to fail and hence this fix is required.

Looks good.

Related note: local_readlink() with fs_sm == SM_MAPPED reads the
contents of *any* file.  I don't see a check that the file is actually
a symlink.  What if an application relies on the EINVAL return value
when calling readlink() on something that is not a file (not sure how
this maps through to 9p though)?

Stefan
jvrao - Dec. 22, 2010, 12:11 a.m.
On 12/20/2010 11:51 PM, Stefan Hajnoczi wrote:
> On Tue, Dec 21, 2010 at 5:20 AM, Harsh Prateek Bora
> <harsh@linux.vnet.ibm.com> wrote:
>> This patch removes the addition of null char in symlink file
>> which is being appended to file in case of mapped security model.
>> Without this patch, the extra null char causes LTP testcase lstat03
>> to fail and hence this fix is required.
> 
> Looks good.
> 
> Related note: local_readlink() with fs_sm == SM_MAPPED reads the
> contents of *any* file.  I don't see a check that the file is actually
> a symlink.  What if an application relies on the EINVAL return value
> when calling readlink() on something that is not a file (not sure how
> this maps through to 9p though)?

Stefan, yes. This is a bug we realized .. fix will be on the way shortly. :)

Thanks,
JV

> 
> Stefan
>

Patch

diff --git a/hw/virtio-9p-local.c b/hw/virtio-9p-local.c
index 656bfb3..3b6447d 100644
--- a/hw/virtio-9p-local.c
+++ b/hw/virtio-9p-local.c
@@ -370,7 +370,7 @@  static int local_symlink(FsContext *fs_ctx, const char *oldpath,
             return fd;
         }
         /* Write the oldpath (target) to the file. */
-        oldpath_size = strlen(oldpath) + 1;
+        oldpath_size = strlen(oldpath);
         do {
             write_size = write(fd, (void *)oldpath, oldpath_size);
         } while (write_size == -1 && errno == EINTR);