Merge branch 'tizen_qemu_2.0' into tizen
[sdk/emulator/qemu.git] / hw / 9pfs / virtio-9p-xattr.c
index 3018bae..87505ca 100644 (file)
@@ -67,29 +67,32 @@ ssize_t v9fs_list_xattr(FsContext *ctx, const char *path,
                         void *value, size_t vsize)
 {
     ssize_t size = 0;
-    char buffer[PATH_MAX];
+    char *buffer;
     void *ovalue = value;
     XattrOperations *xops;
     char *orig_value, *orig_value_start;
     ssize_t xattr_len, parsed_len = 0, attr_len;
 
     /* Get the actual len */
+    buffer = rpath(ctx, path);
 #ifdef CONFIG_LINUX
-    xattr_len = llistxattr(rpath(ctx, path, buffer), value, 0);
+    xattr_len = llistxattr(buffer, value, 0);
 #else
-    xattr_len = listxattr(rpath(ctx, path, buffer), value, 0, XATTR_NOFOLLOW);
+    xattr_len = listxattr(buffer, value, 0, XATTR_NOFOLLOW);
 #endif
     if (xattr_len <= 0) {
+        g_free(buffer);
         return xattr_len;
     }
 
     /* Now fetch the xattr and find the actual size */
     orig_value = g_malloc(xattr_len);
 #ifdef CONFIG_LINUX
-    xattr_len = llistxattr(rpath(ctx, path, buffer), orig_value, xattr_len);
+    xattr_len = llistxattr(buffer, orig_value, xattr_len);
 #else
-    xattr_len = listxattr(rpath(ctx, path, buffer), orig_value, xattr_len, XATTR_NOFOLLOW);
+    xattr_len = listxattr(buffer, orig_value, xattr_len, XATTR_NOFOLLOW);
 #endif
+    g_free(buffer);
 
     /* store the orig pointer */
     orig_value_start = orig_value;