diff mbox

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

Message ID 1292908848-8381-1-git-send-email-harsh@linux.vnet.ibm.com
State New
Headers show

Commit Message

Harsh Prateek Bora Dec. 21, 2010, 5:20 a.m. UTC
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(-)

Comments

Stefan Hajnoczi Dec. 21, 2010, 7:51 a.m. UTC | #1
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. UTC | #2
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
>
diff mbox

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