X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwin32_apply.c;h=b7646651efd5d08040dda18cad4d0e4ed0064e1d;hb=d7aa64b64fc9836418293781b2b093f090414b6e;hp=312bd87605647b9b4ab5c3caf0ca48bedd1bb55d;hpb=38964ddc78c230ce3f4a1f9d44feeea55bd12635;p=wimlib diff --git a/src/win32_apply.c b/src/win32_apply.c index 312bd876..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) CloseHandle(h); #endif return ret; - -error: - set_errno_from_GetLastError(); - ret = WIMLIB_ERR_SET_SECURITY; - goto out_close; } static int