From 6f8cd6e5efa73e925a6d6450a123aaa645f4a38e Mon Sep 17 00:00:00 2001 From: cha0smaster Date: Mon, 22 Aug 2005 21:33:07 +0000 Subject: [PATCH] Cleanups and memleak fix to error code paths of ntfs_create. --- include/ntfs/unistr.h | 4 ++-- libntfs/attrlist.c | 2 +- libntfs/dir.c | 3 +++ libntfs/unistr.c | 4 ++-- ntfsprogs/ntfsmount.c | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/ntfs/unistr.h b/include/ntfs/unistr.h index 6aba7dec..4dea192a 100644 --- a/include/ntfs/unistr.h +++ b/include/ntfs/unistr.h @@ -52,8 +52,8 @@ extern void ntfs_name_upcase(ntfschar *name, u32 name_len, extern void ntfs_file_value_upcase(FILE_NAME_ATTR *file_name_attr, const ntfschar *upcase, const u32 upcase_len); -extern int ntfs_file_values_compare(FILE_NAME_ATTR *file_name_attr1, - FILE_NAME_ATTR *file_name_attr2, +extern int ntfs_file_values_compare(const FILE_NAME_ATTR *file_name_attr1, + const FILE_NAME_ATTR *file_name_attr2, const int err_val, const IGNORE_CASE_BOOL ic, const ntfschar *upcase, const u32 upcase_len); diff --git a/libntfs/attrlist.c b/libntfs/attrlist.c index a461cc97..168b69cc 100644 --- a/libntfs/attrlist.c +++ b/libntfs/attrlist.c @@ -34,7 +34,7 @@ #include "unistr.h" /** - * ntfs_attrlist_need - check whether attribute need attribute list + * ntfs_attrlist_need - check whether inode need attribute list * @ni: opened ntfs inode for which perform check * * Check whether all are attributes belong to one MFT record, in that case diff --git a/libntfs/dir.c b/libntfs/dir.c index 8973a999..1b049fed 100644 --- a/libntfs/dir.c +++ b/libntfs/dir.c @@ -1118,6 +1118,7 @@ ntfs_inode *ntfs_create(ntfs_inode *dir_ni, ntfschar *name, u8 name_len, } if (ntfs_attr_pwrite(na, 0, si_len, si) != si_len) { err = errno; + ntfs_attr_close(na); ntfs_error(, "Failed to initialize STANDARD_INFORMATION " "attribute."); goto err_out; @@ -1165,6 +1166,7 @@ ntfs_inode *ntfs_create(ntfs_inode *dir_ni, ntfschar *name, u8 name_len, if (ntfs_attr_pwrite(na, 0, ir_len, ir) != ir_len) { err = errno; free(ir); + ntfs_attr_close(na); ntfs_error(, "Failed to initialize INDEX_ROOT."); goto err_out; } @@ -1207,6 +1209,7 @@ ntfs_inode *ntfs_create(ntfs_inode *dir_ni, ntfschar *name, u8 name_len, } if (ntfs_attr_pwrite(na, 0, fn_len, fn) != fn_len) { err = errno; + ntfs_attr_close(na); ntfs_error(, "Failed to initialize FILE_NAME attribute."); goto err_out; } diff --git a/libntfs/unistr.c b/libntfs/unistr.c index f2254734..17775cc2 100644 --- a/libntfs/unistr.c +++ b/libntfs/unistr.c @@ -314,8 +314,8 @@ void ntfs_file_value_upcase(FILE_NAME_ATTR *file_name_attr, /** * ntfs_file_values_compare */ -int ntfs_file_values_compare(FILE_NAME_ATTR *file_name_attr1, - FILE_NAME_ATTR *file_name_attr2, +int ntfs_file_values_compare(const FILE_NAME_ATTR *file_name_attr1, + const FILE_NAME_ATTR *file_name_attr2, const int err_val, const IGNORE_CASE_BOOL ic, const ntfschar *upcase, const u32 upcase_len) { diff --git a/ntfsprogs/ntfsmount.c b/ntfsprogs/ntfsmount.c index 94a25909..bf25e9a6 100644 --- a/ntfsprogs/ntfsmount.c +++ b/ntfsprogs/ntfsmount.c @@ -632,7 +632,7 @@ static int ntfs_fuse_rm(const char *org_path) if (!path) return -errno; /* Open object for delete. */ - ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); + ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); if (!ni) { res = -errno; goto exit;