const char * const fmt, va_list ap)
{
int len = 0;
- char buffer[MAXINFO + 2];
+ char buffer[MAXINFO + 5];
if(feat)
- len = msnprintf(buffer, MAXINFO, "[%s] ", feat->name);
- len += mvsnprintf(buffer + len, MAXINFO - len, fmt, ap);
+ len = msnprintf(buffer, (MAXINFO + 1), "[%s] ", feat->name);
+ len += mvsnprintf(buffer + len, (MAXINFO + 1) - len, fmt, ap);
+ if(len >= MAXINFO) { /* too long, shorten with '...' */
+ --len;
+ buffer[len++] = '.';
+ buffer[len++] = '.';
+ buffer[len++] = '.';
+ }
buffer[len++] = '\n';
buffer[len] = '\0';
Curl_debug(data, CURLINFO_TEXT, buffer, len);
CURLcode result = CURLE_OK;
struct dynbuf build;
- Curl_dyn_init(&build, 10000);
+ Curl_dyn_init(&build, CURL_X509_STR_MAX);
if(Curl_dyn_add(&build, label) ||
Curl_dyn_addn(&build, ":", 1) ||
void Curl_ssl_version(char *buffer, size_t size);
/* Certificate information list handling. */
+#define CURL_X509_STR_MAX 100000
void Curl_ssl_free_certinfo(struct Curl_easy *data);
CURLcode Curl_ssl_init_certinfo(struct Curl_easy *data, int num);
#define CURL_ASN1_CHARACTER_STRING 29
#define CURL_ASN1_BMP_STRING 30
-/* Max sixes */
-
-#define MAX_X509_STR 10000
-#define MAX_X509_CERT 100000
#ifdef WANT_EXTRACT_CERTINFO
/* ASN.1 OID table entry. */
if(beg < end) {
if(symbolic) {
struct dynbuf buf;
- Curl_dyn_init(&buf, MAX_X509_STR);
+ Curl_dyn_init(&buf, CURL_X509_STR_MAX);
result = encodeOID(&buf, beg, end);
if(!result) {
CURLcode result = CURLE_OK;
bool added = FALSE;
struct dynbuf temp;
- Curl_dyn_init(&temp, MAX_X509_STR);
+ Curl_dyn_init(&temp, CURL_X509_STR_MAX);
for(p1 = dn->beg; p1 < dn->end;) {
p1 = getASN1Element(&rdn, p1, dn->end);
CURLcode result;
struct dynbuf out;
- Curl_dyn_init(&out, MAX_X509_STR);
+ Curl_dyn_init(&out, CURL_X509_STR_MAX);
/* Generate a certificate information record for the public key. */
if(certnum)
return CURLE_OK;
- Curl_dyn_init(&out, MAX_X509_STR);
+ Curl_dyn_init(&out, CURL_X509_STR_MAX);
/* Prepare the certificate information for curl_easy_getinfo(). */
/* Extract the certificate ASN.1 elements. */
fail_unless(result[sizeof(result) - 1] == '\0',
"No truncation of infof input");
-/* Just over the limit for truncation without newline */
+/* Just over the limit without newline for truncation via '...' */
memset(input + 2047, 'A', 4);
Curl_infof(data, "%s", input);
-fail_unless(strlen(result) == 2048, "Truncation of infof input 1");
+fail_unless(strlen(result) == 2051, "Truncation of infof input 1");
fail_unless(result[sizeof(result) - 1] == '\0', "Truncation of infof input 1");
-/* Just over the limit for truncation with newline */
+/* Just over the limit with newline for truncation via '...' */
memset(input + 2047, 'A', 4);
memset(input + 2047 + 4, '\n', 1);
Curl_infof(data, "%s", input);
-fail_unless(strlen(result) == 2048, "Truncation of infof input 2");
+fail_unless(strlen(result) == 2051, "Truncation of infof input 2");
fail_unless(result[sizeof(result) - 1] == '\0', "Truncation of infof input 2");
-/* Way over the limit for truncation with newline */
+/* Way over the limit for truncation via '...' */
memset(input, '\0', sizeof(input));
memset(input, 'A', sizeof(input) - 1);
Curl_infof(data, "%s", input);
-fail_unless(strlen(result) == 2048, "Truncation of infof input 3");
+fail_unless(strlen(result) == 2051, "Truncation of infof input 3");
fail_unless(result[sizeof(result) - 1] == '\0', "Truncation of infof input 3");