X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fntfs-3g_apply.c;h=eb48896baa43a1545f5d01011032fdcad34b1472;hp=9f04dbea5b65b6180c0612461fa4a9099ce2deda;hb=72e39714f4308e2e86ededd335f73610265409c3;hpb=51829aecdac415b417ab5b8ac897014bb780de10;ds=sidebyside diff --git a/src/ntfs-3g_apply.c b/src/ntfs-3g_apply.c index 9f04dbea..eb48896b 100644 --- a/src/ntfs-3g_apply.c +++ b/src/ntfs-3g_apply.c @@ -5,7 +5,7 @@ * much information as possible, including security data, file attributes, DOS * names, alternate data streams, and object IDs. * - * Note: because NTFS-3g offers inode-based interfaces, we actually don't need + * Note: because NTFS-3G offers inode-based interfaces, we actually don't need * to deal with paths at all! (Other than for error messages.) */ @@ -120,6 +120,8 @@ sid_size(const wimlib_SID *sid) * bug. However, removing the DACL is not a valid workaround because this * changes the meaning of the security descriptor--- an empty DACL allows no * access, whereas a "null" DACL allows all access. + * - Versions before 2016.2.22 reject security descriptors containing SIDs with + * too many subauthorities. We do not work around this. * * If the security descriptor was fixed, this function returns an allocated * buffer containing the fixed security descriptor, and its size is updated. @@ -302,7 +304,7 @@ ntfs_3g_restore_dos_name(ntfs_inode *ni, ntfs_inode *dir_ni, goto out_close; } - /* Unlike most other NTFS-3g functions, ntfs_set_ntfs_dos_name() + /* Unlike most other NTFS-3G functions, ntfs_set_ntfs_dos_name() * changes the directory's last modification timestamp... * Change it back. */ return ntfs_3g_restore_timestamps(vol, dentry->d_parent->d_inode); @@ -335,8 +337,8 @@ ntfs_3g_restore_reparse_point(ntfs_inode *ni, const struct wim_inode *inode, "tag. The preceding error may have been caused " "by a known bug in libntfs-3g where it does not " "correctly validate non-Microsoft reparse " - "points. This bug may be fixed in the 2016 " - "release of libntfs-3g."); + "points. This bug was fixed in NTFS-3G version " + "2016.2.22."); } return WIMLIB_ERR_SET_REPARSE_DATA; } @@ -477,7 +479,8 @@ ntfs_3g_set_metadata(ntfs_inode *ni, const struct wim_inode *inode, "\nThis error occurred because libntfs-3g thinks " "the security descriptor is invalid. If you " "are extracting a Windows 10 image, this may be " - "caused by a known bug in libntfs-3g. See: " + "caused by a known bug in libntfs-3g. This bug " + "was fixed in NTFS-3G version 2016.2.22. See: " "https://wimlib.net/forums/viewtopic.php?f=1&t=4 " "for more information.\n\n"); } @@ -574,9 +577,10 @@ ntfs_3g_create_directories(struct wim_dentry *root, /* Set the DOS name of any directory that has one. In addition, create * empty attributes for directories that have them. Note that creating - * an empty reparse point attribute must happen *after* setting the - * DOS name in order to work around a case where - * ntfs_set_ntfs_dos_name() fails with EOPNOTSUPP. */ + * an empty reparse point attribute must happen *after* setting the DOS + * name in order to work around a case where ntfs_set_ntfs_dos_name() + * fails with EOPNOTSUPP. This bug was fixed in NTFS-3G version + * 2016.2.22. */ list_for_each_entry(dentry, dentry_list, d_extraction_list_node) { const struct wim_inode *inode = dentry->d_inode; @@ -1015,7 +1019,7 @@ ntfs_3g_extract(struct list_head *dentry_list, struct apply_ctx *_ctx) struct wim_dentry *root; int ret; - /* For NTFS-3g extraction mode we require that the dentries to extract + /* For NTFS-3G extraction mode we require that the dentries to extract * form a single tree. */ root = list_first_entry(dentry_list, struct wim_dentry, d_extraction_list_node); @@ -1023,7 +1027,7 @@ ntfs_3g_extract(struct list_head *dentry_list, struct apply_ctx *_ctx) /* Mount the NTFS volume. */ vol = ntfs_mount(ctx->common.target, 0); if (!vol) { - ERROR_WITH_ERRNO("Failed to mount \"%s\" with NTFS-3g", + ERROR_WITH_ERRNO("Failed to mount \"%s\" with NTFS-3G", ctx->common.target); return WIMLIB_ERR_NTFS_3G; } @@ -1064,7 +1068,7 @@ ntfs_3g_extract(struct list_head *dentry_list, struct apply_ctx *_ctx) out_unmount: if (ntfs_umount(ctx->vol, FALSE) && !ret) { - ERROR_WITH_ERRNO("Failed to unmount \"%s\" with NTFS-3g", + ERROR_WITH_ERRNO("Failed to unmount \"%s\" with NTFS-3G", ctx->common.target); ret = WIMLIB_ERR_NTFS_3G; } @@ -1072,7 +1076,7 @@ out_unmount: } const struct apply_operations ntfs_3g_apply_ops = { - .name = "NTFS-3g", + .name = "NTFS-3G", .get_supported_features = ntfs_3g_get_supported_features, .extract = ntfs_3g_extract, .context_size = sizeof(struct ntfs_3g_apply_ctx),