X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fwin32.c;h=f8efec04a8edeb682909a4e1ad4a697ede847ac3;hp=36f33f522bc2c9d930047ff1b398be5f2cafa087;hb=9c5469aa171f34e1af510a8a98ec056d27979bbf;hpb=5592f3bfcf0c2da0d8b9da8ec3f4c479e410aa0a diff --git a/src/win32.c b/src/win32.c index 36f33f52..f8efec04 100644 --- a/src/win32.c +++ b/src/win32.c @@ -678,6 +678,8 @@ win32_capture_maybe_rpfix_target(wchar_t *target, u16 *target_nbytes_p, if (ret < 0) return RP_NOT_FIXED; stripped_chars = ret; + if (stripped_chars) + stripped_chars -= 2; target[target_nchars] = L'\0'; orig_target = target; target = capture_fixup_absolute_symlink(target + stripped_chars, @@ -688,7 +690,7 @@ win32_capture_maybe_rpfix_target(wchar_t *target, u16 *target_nbytes_p, wmemmove(orig_target + stripped_chars, target, target_nchars + 1); *target_nbytes_p = (target_nchars + stripped_chars) * sizeof(wchar_t); DEBUG("Fixed reparse point (new target: \"%ls\")", orig_target); - if (stripped_chars == 6) + if (stripped_chars) return RP_FIXED_FULLPATH; else return RP_FIXED_ABSPATH; @@ -1314,6 +1316,14 @@ win32_build_dentry_tree(struct wim_dentry **root_ret, if (path_nchars > 32767) return WIMLIB_ERR_INVALID_PARAM; + if (GetFileAttributesW(root_disk_path) == INVALID_FILE_ATTRIBUTES && + GetLastError() == ERROR_FILE_NOT_FOUND) + { + ERROR("Capture directory \"%ls\" does not exist!", + root_disk_path); + return WIMLIB_ERR_OPENDIR; + } + ret = win32_get_file_and_vol_ids(root_disk_path, ¶ms->capture_root_ino, ¶ms->capture_root_dev);