lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <1343735309-30579-5-git-send-email-wenqing.lz@taobao.com> Date: Tue, 31 Jul 2012 19:47:57 +0800 From: Zheng Liu <gnehzuil.liu@...il.com> To: linux-ext4@...r.kernel.org Cc: Zheng Liu <wenqing.lz@...bao.com> Subject: [PATCH 04/36 v4] libext2fs: add ext2fs_find_entry_ext_attr function From: Zheng Liu <wenqing.lz@...bao.com> We need to search extend attributes to get entry of inline data. Thus, add this function to do this work. Signed-off-by: Zheng Liu <wenqing.lz@...bao.com> --- lib/ext2fs/ext2fs.h | 4 ++++ lib/ext2fs/ext_attr.c | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 0 deletions(-) diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h index 65d30de..fd051b1 100644 --- a/lib/ext2fs/ext2fs.h +++ b/lib/ext2fs/ext2fs.h @@ -1136,6 +1136,10 @@ extern errcode_t ext2fs_adjust_ea_refcount3(ext2_filsys fs, blk64_t blk, char *block_buf, int adjust, __u32 *newcount, ext2_ino_t inum); +extern errcode_t ext2fs_find_entry_ext_attr(struct ext2_ext_attr_entry **pentry, + int name_index, const char *name, + size_t size, int sorted); + /* extent.c */ extern errcode_t ext2fs_extent_header_verify(void *ptr, int size); diff --git a/lib/ext2fs/ext_attr.c b/lib/ext2fs/ext_attr.c index 9649a14..b2d36b6 100644 --- a/lib/ext2fs/ext_attr.c +++ b/lib/ext2fs/ext_attr.c @@ -171,6 +171,32 @@ errout: return retval; } +errcode_t ext2fs_find_entry_ext_attr(struct ext2_ext_attr_entry **pentry, + int name_index, const char *name, + size_t size, int sorted) +{ + struct ext2_ext_attr_entry *entry; + size_t name_len; + int cmp; + + if (name == NULL) + return -1; + name_len = strlen(name); + entry = *pentry; + for (; !EXT2_EXT_IS_LAST_ENTRY(entry); entry = EXT2_EXT_ATTR_NEXT(entry)) { + cmp = name_index - entry->e_name_index; + if (!cmp) + cmp = name_len - entry->e_name_len; + if (!cmp) + cmp = memcmp(name, EXT2_EXT_ATTR_NAME(entry), name_len); + if (!cmp) + break; + } + *pentry = entry; + + return cmp; +} + errcode_t ext2fs_adjust_ea_refcount2(ext2_filsys fs, blk64_t blk, char *block_buf, int adjust, __u32 *newcount) -- 1.7.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists