X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fhardlink.c;h=5e2c62618ad43b5e2641d97a31cb86f899425e97;hp=53d03ecde00f4f41fef58dece3460526bf580d9d;hb=19fd5bbc4f64cc8bf735f7c2c0bb864876998cf4;hpb=bb40342796df9c677f6903b596abf4e9e5769845 diff --git a/src/hardlink.c b/src/hardlink.c index 53d03ecd..5e2c6261 100644 --- a/src/hardlink.c +++ b/src/hardlink.c @@ -23,10 +23,14 @@ * along with wimlib; if not, see http://www.gnu.org/licenses/. */ -#include "wimlib_internal.h" -#include "dentry.h" -#include "list.h" -#include "lookup_table.h" +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "wimlib/capture.h" +#include "wimlib/dentry.h" +#include "wimlib/error.h" +#include "wimlib/lookup_table.h" /* NULL NULL * ^ ^ @@ -342,6 +346,13 @@ fix_nominal_inode(struct wim_inode *inode, struct list_head *inode_list, wimlib_assert(inode->i_nlink == inode_link_count(inode)); + if (inode->i_nlink > 1 && + (inode->i_attributes & FILE_ATTRIBUTE_DIRECTORY)) + { + ERROR("Found unsupported directory hard link!"); + return WIMLIB_ERR_INVALID_DENTRY; + } + LIST_HEAD(dentries_with_data_streams); LIST_HEAD(dentries_with_no_data_streams); HLIST_HEAD(true_inodes); @@ -550,7 +561,6 @@ inode_table_prepare_inode_list(struct wim_inode_table *table, inode->i_ino = cur_ino++; else inode->i_ino = 0; - list_add_tail(&inode->i_list, head); } for (size_t i = 0; i < table->capacity; i++) {