[Ocfs2-tools-devel] [PATCH] fsck.ocfs2: dynamically allocate ocfs2_dir_entry for long filenames
Goldwyn Rodrigues
rgoldwyn at suse.de
Mon Sep 30 06:57:33 PDT 2013
References: bnc#834191
Signed-off-by: Goldwyn Rodrigues <rgoldwyn at suse.com>
---
fsck.ocfs2/pass1b.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/fsck.ocfs2/pass1b.c b/fsck.ocfs2/pass1b.c
index f89b401..8e69371 100644
--- a/fsck.ocfs2/pass1b.c
+++ b/fsck.ocfs2/pass1b.c
@@ -961,11 +961,19 @@ static int walk_iterate(struct ocfs2_dir_entry *de, uint64_t blocknr,
static void walk_cwd(struct dir_scan_context *scan)
{
errcode_t ret;
- struct ocfs2_dir_entry de;
+ struct ocfs2_dir_entry *de;
+ int len = sizeof(struct ocfs2_dir_entry);
- memcpy(de.name, scan->ds_cwd, scan->ds_cwdlen);
- de.name_len = scan->ds_cwdlen;
- name_inode(scan, &de);
+ if (scan->ds_cwdlen > OCFS2_MAX_FILENAME_LEN)
+ len = sizeof(struct ocfs2_dir_entry) + scan->ds_cwdlen
+ - OCFS2_MAX_FILENAME_LEN;
+
+ ret = ocfs2_malloc(len, &de);
+
+ memcpy(de->name, scan->ds_cwd, scan->ds_cwdlen);
+ de->name_len = scan->ds_cwdlen;
+ name_inode(scan, de);
+ free(de);
ret = ocfs2_dir_iterate(scan->ds_ost->ost_fs, scan->ds_ino,
OCFS2_DIRENT_FLAG_EXCLUDE_DOTS, NULL,
--
1.8.1.4
--
Goldwyn
More information about the Ocfs2-tools-devel
mailing list