@@ -2032,8 +2032,8 @@
SHOW_INT(tls_timeout);
- SHOW_INT(renegotiate_bytes);
- SHOW_INT(renegotiate_packets);
+ SHOW_INT64(renegotiate_bytes);
+ SHOW_INT64(renegotiate_packets);
SHOW_INT(renegotiate_seconds);
SHOW_INT(handshake_window);
@@ -9187,12 +9187,26 @@
else if (streq(p[0], "reneg-bytes") && p[1] && !p[2])
{
VERIFY_PERMISSION(OPT_P_TLS_PARMS);
- options->renegotiate_bytes = positive_atoi(p[1]);
+ char *end;
+ long long reneg_bytes = strtoll(p[1], &end, 10);
+ if (*end != '\0' || reneg_bytes < 0)
+ {
+ msg(msglevel, "--reneg-bytes parameter must be an integer and >= 0");
+ goto err;
+ }
+ options->renegotiate_bytes = reneg_bytes;
}
else if (streq(p[0], "reneg-pkts") && p[1] && !p[2])
{
VERIFY_PERMISSION(OPT_P_TLS_PARMS);
- options->renegotiate_packets = positive_atoi(p[1]);
+ char *end;
+ long long pkt_max = strtoll(p[1], &end, 10);
+ if (*end != '\0' || pkt_max < 0)
+ {
+ msg(msglevel, "--reneg-pkts parameter must be an integer and >= 0");
+ goto err;
+ }
+ options->renegotiate_packets = pkt_max;
}
else if (streq(p[0], "reneg-sec") && p[1] && !p[3])
{
@@ -626,8 +626,8 @@
int tls_timeout;
/* Data channel key renegotiation parameters */
- int renegotiate_bytes;
- int renegotiate_packets;
+ int64_t renegotiate_bytes;
+ int64_t renegotiate_packets;
int renegotiate_seconds;
int renegotiate_seconds_min;
@@ -118,7 +118,7 @@
* May *not* be NULL.
*/
static void
-tls_limit_reneg_bytes(const char *ciphername, int *reneg_bytes)
+tls_limit_reneg_bytes(const char *ciphername, int64_t *reneg_bytes)
{
if (cipher_kt_insecure(ciphername))
{
@@ -3028,7 +3028,7 @@
&& should_trigger_renegotiation(session, ks))
{
msg(D_TLS_DEBUG_LOW, "TLS: soft reset sec=%d/%d bytes=" counter_format
- "/%d pkts=" counter_format "/%d",
+ "/%" PRIi64 " pkts=" counter_format "/%" PRIi64,
(int) (now - ks->established), session->opt->renegotiate_seconds,
ks->n_bytes, session->opt->renegotiate_bytes,
ks->n_packets, session->opt->renegotiate_packets);
@@ -331,8 +331,8 @@
int transition_window;
int handshake_window;
interval_t packet_timeout;
- int renegotiate_bytes;
- int renegotiate_packets;
+ int64_t renegotiate_bytes;
+ int64_t renegotiate_packets;
interval_t renegotiate_seconds;
/* cert verification parms */
Attention is currently required from: flichtenheld. Hello flichtenheld, I'd like you to do a code review. Please visit http://gerrit.openvpn.net/c/openvpn/+/795?usp=email to review the following change. Change subject: Change --reneg-bytes and --reneg-packets to 64 bit counters ...................................................................... Change --reneg-bytes and --reneg-packets to 64 bit counters reneg-bytes can currently only specify up to a maximum of 2GB. This makes it even problematic to use without extended counters. Change-Id: I993e7fc5609955d271e74370affc2eea340a1e2d Signed-off-by: Arne Schwabe <arne@rfc2549.org> --- M src/openvpn/options.c M src/openvpn/options.h M src/openvpn/ssl.c M src/openvpn/ssl_common.h 4 files changed, 24 insertions(+), 10 deletions(-) git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/95/795/1