From 9792c01efcf868269bab6cce4fa6efefcc1adcb6 Mon Sep 17 00:00:00 2001 From: ngkaho1234 Date: Sat, 10 Oct 2015 00:07:55 +0800 Subject: FIX: ext4_listxattr not returning required list buffer size when size == 0. --- lwext4/ext4.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lwext4/ext4.c b/lwext4/ext4.c index 216fc9d..6923b1b 100644 --- a/lwext4/ext4.c +++ b/lwext4/ext4.c @@ -2102,11 +2102,16 @@ int ext4_listxattr(const char *path, char *list, size_t size, size_t *ret_size) xattr_ref.iter_arg = &lxi; ext4_fs_xattr_iterate(&xattr_ref, ext4_iterate_ea_list); - if (ret_size && lxi.list_too_small) { - *ret_size = lxi.ret_size; + if (lxi.list_too_small) r = ERANGE; - } + if (r == EOK) { + if (lxi.get_required_size) { + if (ret_size) + *ret_size = lxi.ret_size; + + } + } ext4_fs_put_xattr_ref(&xattr_ref); ext4_fs_put_inode_ref(&inode_ref); Finish: -- cgit v1.2.3