# HG changeset patch # User Paul Boddie # Date 1663261075 -7200 # Node ID 902da02f4f5070b4ceaee36e43205e03bee599f8 # Parent 89499867ceb9239febe0daec79ac57b8ce446e32 Employed a more robust way of padding the directory entry structure. diff -r 89499867ceb9 -r 902da02f4f50 libfsserver/lib/directories/ext2_directory_accessor.cc --- a/libfsserver/lib/directories/ext2_directory_accessor.cc Thu Sep 15 18:57:10 2022 +0200 +++ b/libfsserver/lib/directories/ext2_directory_accessor.cc Thu Sep 15 18:57:55 2022 +0200 @@ -1,7 +1,7 @@ /* * An object for a directory provided by an Ext2-compatible filesystem. * - * Copyright (C) 2021 Paul Boddie + * Copyright (C) 2021, 2022 Paul Boddie * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -53,7 +53,7 @@ static int pad_align(int value) { - return value + (sizeof(unsigned int) - (value % sizeof(unsigned int))); + return value + (sizeof(l4_umword_t) - (value % sizeof(l4_umword_t))); } /* Callback function. */ @@ -120,6 +120,8 @@ char buffer[reclen]; struct dirent *dirent = (struct dirent *) buffer; + memset(dirent, 0, reclen); + dirent->d_ino = dir->entry->inode; dirent->d_off = dir->offset; dirent->d_reclen = reclen; @@ -128,7 +130,6 @@ /* Copy the name, padding the memory after it to the alignment boundary. */ memcpy(dirent->d_name, dir->entry->name, namelen); - memset(dirent->d_name + namelen, 0, reclen - namelen); /* Write the structure to the pipe. */