← Commit list

fbfb2499f0

Daniel Stenberg
Daniel Stenberg
2026-08-12
SUCCESS Duration: 422s

Subject

keylog: add a random size argument to Curl_tls_keylog_write()

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/vtls/gtls.c+2 -1
@@ -1043,7 +1043,8 @@ static int keylog_callback(gnutls_session_t session, const char *label,
return -1;
}
- Curl_tls_keylog_write(label, crandom.data, secret->data, secret->size);
+ Curl_tls_keylog_write(label, crandom.data, crandom.size,
+ secret->data, secret->size);
return 0;
}
lib/vtls/keylog.c+8 -7
@@ -102,19 +102,20 @@ bool Curl_tls_keylog_write_line(const char *line)
return TRUE;
}
-bool Curl_tls_keylog_write(
- const char *label,
- const unsigned char client_random[CLIENT_RANDOM_SIZE],
- const unsigned char *secret, size_t secretlen)
+bool Curl_tls_keylog_write(const char *label,
+ const unsigned char *client_random,
+ size_t random_size,
+ const unsigned char *secret, size_t secretlen)
{
size_t pos, i;
unsigned char line[KEYLOG_LABEL_MAXLEN + 1 +
(2 * CLIENT_RANDOM_SIZE) + 1 +
(2 * SECRET_MAXLEN) + 1 + 1];
-
- if(!keylog_file_fp) {
+ DEBUGASSERT(random_size >= CLIENT_RANDOM_SIZE);
+ if(random_size < CLIENT_RANDOM_SIZE)
+ return FALSE;
+ if(!keylog_file_fp)
return FALSE;
- }
pos = strlen(label);
if(pos > KEYLOG_LABEL_MAXLEN || !secretlen || secretlen > SECRET_MAXLEN) {
lib/vtls/keylog.h+4 -4
@@ -61,10 +61,10 @@ const char *Curl_tls_keylog_file_name(void);
* Appends a key log file entry.
* Returns true iff the key log file is open and a valid entry was provided.
*/
-bool Curl_tls_keylog_write(
- const char *label,
- const unsigned char client_random[CLIENT_RANDOM_SIZE],
- const unsigned char *secret, size_t secretlen);
+bool Curl_tls_keylog_write(const char *label,
+ const unsigned char *client_random,
+ size_t random_size,
+ const unsigned char *secret, size_t secretlen);
/*
* Appends a line to the key log file, ensure it is terminated by an LF.
lib/vtls/openssl.c+1 -0
@@ -700,6 +700,7 @@ static void ossl_log_tls12_secret(const SSL *ssl, bool *keylog_done)
*keylog_done = TRUE;
Curl_tls_keylog_write("CLIENT_RANDOM", client_random,
+ sizeof(client_random),
master_key, master_key_length);
}
#endif /* !HAVE_KEYLOG_CALLBACK */
lib/vtls/rustls.c+2 -2
@@ -517,11 +517,11 @@ static void cr_keylog_log_cb(struct rustls_str label,
size_t secret_len)
{
char clabel[KEYLOG_LABEL_MAXLEN];
- (void)client_random_len;
DEBUGASSERT(client_random_len == CLIENT_RANDOM_SIZE);
/* Turning a "rustls_str" into a null delimited "c" string */
curl_msnprintf(clabel, sizeof(clabel), "%.*s", (int)label.len, label.data);
- Curl_tls_keylog_write(clabel, client_random, secret, secret_len);
+ Curl_tls_keylog_write(clabel, client_random, client_random_len,
+ secret, secret_len);
}
static CURLcode
lib/vtls/wolfssl.c+3 -2
@@ -162,7 +162,8 @@ static int wssl_tls13_secret_callback(SSL *ssl, int id,
return 0;
}
- Curl_tls_keylog_write(label, client_random, secret, secretSz);
+ Curl_tls_keylog_write(label, client_random, sizeof(client_random),
+ secret, secretSz);
return 0;
}
#endif /* HAVE_SECRET_CALLBACK && WOLFSSL_TLS13 */
@@ -203,7 +204,7 @@ static void wssl_log_tls12_secret(WOLFSSL *ssl)
return;
}
- Curl_tls_keylog_write("CLIENT_RANDOM", cr, ms, msLen);
+ Curl_tls_keylog_write("CLIENT_RANDOM", cr, crLen, ms, msLen);
}
#endif /* OPENSSL_EXTRA */