X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwin32_apply.c;h=b7646651efd5d08040dda18cad4d0e4ed0064e1d;hb=dc9b749a16fde09e45f3d3175aec680d38f3d298;hp=6ac9e4090ec53bac1bf7585327652e1f433ab39f;hpb=37deb2abf62d62ca7f3d53472bf0b6fe6e6221cc;p=wimlib diff --git a/src/win32_apply.c b/src/win32_apply.c index 6ac9e409..b7646651 100644 --- a/src/win32_apply.c +++ b/src/win32_apply.c @@ -540,8 +540,9 @@ win32_set_security_descriptor(const wchar_t *path, const u8 *desc, if (func_NtSetSecurityObject) { h = win32_open_existing_file(path, MAXIMUM_ALLOWED); if (h == INVALID_HANDLE_VALUE) { - ERROR_WITH_ERRNO("Can't open %ls (%u)", path, GetLastError()); - goto error; + set_errno_from_GetLastError(); + ERROR_WITH_ERRNO("Can't open %ls", path); + return WIMLIB_ERR_SET_SECURITY; } } #endif @@ -549,8 +550,10 @@ win32_set_security_descriptor(const wchar_t *path, const u8 *desc, for (;;) { err = do_win32_set_security_descriptor(h, path, info, (PSECURITY_DESCRIPTOR)desc); - if (err == ERROR_SUCCESS) + if (err == ERROR_SUCCESS) { + ret = 0; break; + } if ((err == ERROR_PRIVILEGE_NOT_HELD || err == ERROR_ACCESS_DENIED) && !(ctx->extract_flags & WIMLIB_EXTRACT_FLAG_STRICT_ACLS)) @@ -570,23 +573,18 @@ win32_set_security_descriptor(const wchar_t *path, const u8 *desc, } ctx->partial_security_descriptors--; ctx->no_security_descriptors++; + ret = 0; break; } - SetLastError(err); - goto error; + set_errno_from_win32_error(err); + ret = WIMLIB_ERR_SET_SECURITY; + break; } - ret = 0; -out_close: #ifdef WITH_NTDLL - if (func_NtSetSecurityObject && h != INVALID_HANDLE_VALUE) + if (func_NtSetSecurityObject) CloseHandle(h); #endif return ret; - -error: - set_errno_from_GetLastError(); - ret = WIMLIB_ERR_SET_SECURITY; - goto out_close; } static int