mirror of
https://github.com/curl/curl.git
synced 2026-08-25 04:23:36 +03:00
strerror: make the strerror function use local buffers
Instead of using a fixed 256 byte buffer in the connectdata struct. In my build, this reduces the size of the connectdata struct by 11.8%, from 2160 to 1904 bytes with no functionality or performance loss. This also fixes a bug in schannel's Curl_verify_certificate where it called Curl_sspi_strerror when it should have called Curl_strerror for string from GetLastError. the only effect would have been no text or the wrong text being shown for the error. Co-authored-by: Jay Satiro Closes #3612
This commit is contained in:
parent
8eddb8f425
commit
880cd5dd20
13 changed files with 142 additions and 108 deletions
|
|
@ -5,7 +5,7 @@
|
|||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 2004 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 2004 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
|
|
@ -646,20 +646,18 @@ get_winsock_error (int err, char *buf, size_t len)
|
|||
* We don't do range checking (on systems other than Windows) since there is
|
||||
* no good reliable and portable way to do it.
|
||||
*/
|
||||
const char *Curl_strerror(struct connectdata *conn, int err)
|
||||
const char *Curl_strerror(int err, char *buf, size_t buflen)
|
||||
{
|
||||
#ifdef PRESERVE_WINDOWS_ERROR_CODE
|
||||
DWORD old_win_err = GetLastError();
|
||||
#endif
|
||||
int old_errno = errno;
|
||||
char *buf, *p;
|
||||
char *p;
|
||||
size_t max;
|
||||
|
||||
DEBUGASSERT(conn);
|
||||
DEBUGASSERT(err >= 0);
|
||||
|
||||
buf = conn->syserr_buf;
|
||||
max = sizeof(conn->syserr_buf)-1;
|
||||
max = buflen - 1;
|
||||
*buf = '\0';
|
||||
|
||||
#ifdef USE_WINSOCK
|
||||
|
|
@ -757,7 +755,7 @@ const char *Curl_strerror(struct connectdata *conn, int err)
|
|||
}
|
||||
|
||||
#ifdef USE_WINDOWS_SSPI
|
||||
const char *Curl_sspi_strerror (struct connectdata *conn, int err)
|
||||
const char *Curl_sspi_strerror(int err, char *buf, size_t buflen)
|
||||
{
|
||||
#ifdef PRESERVE_WINDOWS_ERROR_CODE
|
||||
DWORD old_win_err = GetLastError();
|
||||
|
|
@ -768,15 +766,13 @@ const char *Curl_sspi_strerror (struct connectdata *conn, int err)
|
|||
size_t outmax;
|
||||
#ifndef CURL_DISABLE_VERBOSE_STRINGS
|
||||
char txtbuf[80];
|
||||
char msgbuf[sizeof(conn->syserr_buf)];
|
||||
char msgbuf[256];
|
||||
char *p, *str, *msg = NULL;
|
||||
bool msg_formatted = FALSE;
|
||||
#endif
|
||||
|
||||
DEBUGASSERT(conn);
|
||||
|
||||
outbuf = conn->syserr_buf;
|
||||
outmax = sizeof(conn->syserr_buf)-1;
|
||||
outbuf = buf;
|
||||
outmax = buflen - 1;
|
||||
*outbuf = '\0';
|
||||
|
||||
#ifndef CURL_DISABLE_VERBOSE_STRINGS
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue