#ifdef USE_WINSOCK
!get_winsock_error(err, buf, buflen) &&
#endif
- !curlx_get_winapi_error(err, buf, buflen))
+ !curlx_get_winapi_error((DWORD)err, buf, buflen))
SNPRINTF(buf, buflen, "Unknown error %d (%#x)", err, err);
}
#else /* !_WIN32 */
* codes (GetLastError) to error messages.
* Returns NULL if no error message was found for error code.
*/
-const char *curlx_get_winapi_error(int err, char *buf, size_t buflen)
+const char *curlx_get_winapi_error(DWORD err, char *buf, size_t buflen)
{
char *p;
wchar_t wbuf[256];
expect the local codepage (eg fprintf, failf, infof).
FormatMessageW -> wcstombs is used for Windows CE compatibility. */
if(FormatMessageW((FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS), NULL, (DWORD)err,
+ FORMAT_MESSAGE_IGNORE_INSERTS), NULL, err,
LANG_NEUTRAL, wbuf, CURL_ARRAYSIZE(wbuf), NULL)) {
size_t written = wcstombs(buf, wbuf, buflen - 1);
if(written != (size_t)-1)
*buf = '\0';
#ifndef CURL_DISABLE_VERBOSE_STRINGS
- if(!curlx_get_winapi_error((int)err, buf, buflen)) {
+ if(!curlx_get_winapi_error(err, buf, buflen)) {
#if defined(__GNUC__) && __GNUC__ >= 7
#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wformat-truncation=1"
#ifdef _WIN32
#define WINAPI_ERROR_LEN 100
-const char *curlx_get_winapi_error(int err, char *buf, size_t buflen);
+const char *curlx_get_winapi_error(DWORD err, char *buf, size_t buflen);
const char *curlx_winapi_strerror(DWORD err, char *buf, size_t buflen);
#endif
* Curl_sspi_strerror:
* Variant of curlx_strerror if the error code is definitely Windows SSPI.
*/
-const char *Curl_sspi_strerror(int err, char *buf, size_t buflen)
+const char *Curl_sspi_strerror(SECURITY_STATUS err, char *buf, size_t buflen)
{
#ifdef _WIN32
DWORD old_win_err = GetLastError();
if(err == SEC_E_ILLEGAL_MESSAGE) {
curl_msnprintf(buf, buflen,
- "SEC_E_ILLEGAL_MESSAGE (0x%08X) - This error usually "
+ "SEC_E_ILLEGAL_MESSAGE (0x%08lX) - This error usually "
"occurs when a fatal SSL/TLS alert is received (e.g. "
"handshake failed). More detail may be available in "
"the Windows System event log.", err);
}
else {
char msgbuf[256];
- if(curlx_get_winapi_error(err, msgbuf, sizeof(msgbuf)))
- curl_msnprintf(buf, buflen, "%s (0x%08X) - %s", txt, err, msgbuf);
+ if(curlx_get_winapi_error((DWORD)err, msgbuf, sizeof(msgbuf)))
+ curl_msnprintf(buf, buflen, "%s (0x%08lX) - %s", txt, err, msgbuf);
else
- curl_msnprintf(buf, buflen, "%s (0x%08X)", txt, err);
+ curl_msnprintf(buf, buflen, "%s (0x%08lX)", txt, err);
}
#else
***************************************************************************/
#ifdef USE_WINDOWS_SSPI
-const char *Curl_sspi_strerror(int err, char *buf, size_t buflen);
+const char *Curl_sspi_strerror(SECURITY_STATUS err, char *buf, size_t buflen);
#endif
#endif /* HEADER_CURL_STRERROR_H */
if(status == SEC_E_OK)
output_token_len = chlg_buf[4].cbBuffer;
else { /* delete the context so a new one can be made */
- infof(data, "digest_sspi: MakeSignature failed, error 0x%08lx",
- (long)status);
+ infof(data, "digest_sspi: MakeSignature failed, error 0x%08lx", status);
Curl_pSecFn->DeleteSecurityContext(digest->http_context);
Curl_safefree(digest->http_context);
}
if(!nego->output_token) {
/* Query the security package for Negotiate */
- nego->status = (DWORD)Curl_pSecFn->QuerySecurityPackageInfo(
+ nego->status = Curl_pSecFn->QuerySecurityPackageInfo(
(TCHAR *)CURL_UNCONST(TEXT(SP_NAME_NEGOTIATE)),
&SecurityPackage);
if(nego->status != SEC_E_OK) {
return CURLE_OUT_OF_MEMORY;
/* Acquire our credentials handle */
- nego->status = (DWORD)
- Curl_pSecFn->AcquireCredentialsHandle(NULL,
+ nego->status = Curl_pSecFn->AcquireCredentialsHandle(NULL,
(TCHAR *)CURL_UNCONST(TEXT(SP_NAME_NEGOTIATE)),
SECPKG_CRED_OUTBOUND, NULL,
nego->p_identity, NULL, NULL,
SEC_CHANNEL_BINDINGS channelBindings;
SecPkgContext_Bindings pkgBindings;
pkgBindings.Bindings = &channelBindings;
- nego->status = (DWORD)Curl_pSecFn->QueryContextAttributes(
+ nego->status = Curl_pSecFn->QueryContextAttributes(
nego->sslContext,
SECPKG_ATTR_ENDPOINT_BINDINGS,
- &pkgBindings
- );
+ &pkgBindings);
if(nego->status == SEC_E_OK) {
chlg_desc.cBuffers++;
chlg_buf[1].BufferType = SECBUFFER_CHANNEL_BINDINGS;
/* Generate our challenge-response message */
nego->status =
- (DWORD)Curl_pSecFn->InitializeSecurityContext(nego->credentials,
- chlg ? nego->context : NULL,
- nego->spn,
- ISC_REQ_CONFIDENTIALITY,
- 0, SECURITY_NATIVE_DREP,
- chlg ? &chlg_desc : NULL,
- 0, nego->context,
- &resp_desc, &attrs, NULL);
+ Curl_pSecFn->InitializeSecurityContext(nego->credentials,
+ chlg ? nego->context : NULL,
+ nego->spn,
+ ISC_REQ_CONFIDENTIALITY,
+ 0, SECURITY_NATIVE_DREP,
+ chlg ? &chlg_desc : NULL,
+ 0, nego->context,
+ &resp_desc, &attrs, NULL);
/* Free the decoded challenge as it is not required anymore */
free(chlg);
if(GSS_ERROR(nego->status)) {
char buffer[STRERROR_LEN];
failf(data, "InitializeSecurityContext failed: %s",
- Curl_sspi_strerror((int)nego->status, buffer, sizeof(buffer)));
+ Curl_sspi_strerror(nego->status, buffer, sizeof(buffer)));
- if(nego->status == (DWORD)SEC_E_INSUFFICIENT_MEMORY)
+ if(nego->status == SEC_E_INSUFFICIENT_MEMORY)
return CURLE_OUT_OF_MEMORY;
return CURLE_AUTH_ERROR;
if(nego->status == SEC_I_COMPLETE_NEEDED ||
nego->status == SEC_I_COMPLETE_AND_CONTINUE) {
- nego->status = (DWORD)Curl_pSecFn->CompleteAuthToken(nego->context,
- &resp_desc);
+ nego->status = Curl_pSecFn->CompleteAuthToken(nego->context, &resp_desc);
if(GSS_ERROR(nego->status)) {
char buffer[STRERROR_LEN];
failf(data, "CompleteAuthToken failed: %s",
- Curl_sspi_strerror((int)nego->status, buffer, sizeof(buffer)));
+ Curl_sspi_strerror(nego->status, buffer, sizeof(buffer)));
- if(nego->status == (DWORD)SEC_E_INSUFFICIENT_MEMORY)
+ if(nego->status == SEC_E_INSUFFICIENT_MEMORY)
return CURLE_OUT_OF_MEMORY;
return CURLE_AUTH_ERROR;
#ifdef SECPKG_ATTR_ENDPOINT_BINDINGS
CtxtHandle *sslContext;
#endif
- DWORD status;
+ SECURITY_STATUS status;
CredHandle *credentials;
CtxtHandle *context;
SEC_WINNT_AUTH_IDENTITY identity;