summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjca <>2018-03-15 12:27:01 +0000
committerjca <>2018-03-15 12:27:01 +0000
commit2622410ed251447b1fabb360b33d023a95414339 (patch)
treee59ff43ff5a8063f6f2c91ce72b8d8fd4f30e897
parent465530f1caa501bb0fc3b1adcc54d810ee97b096 (diff)
downloadopenbsd-2622410ed251447b1fabb360b33d023a95414339.tar.gz
openbsd-2622410ed251447b1fabb360b33d023a95414339.tar.bz2
openbsd-2622410ed251447b1fabb360b33d023a95414339.zip
Provide SSL_CTX_get_min_proto_version and SSL_CTX_get_max_proto_version
We already provided the setters, so also provide the getters like OpenSSL does. Addition prompted by the use of those functions in recent openvpn releases. manpage diff from schwarze@ (thanks!) with input from jsing@, ok tb@ jsing@
-rw-r--r--src/lib/libssl/Symbols.list4
-rw-r--r--src/lib/libssl/man/SSL_CTX_set_min_proto_version.362
-rw-r--r--src/lib/libssl/s3_lib.c14
-rw-r--r--src/lib/libssl/shlib_version2
-rw-r--r--src/lib/libssl/ssl.h12
-rw-r--r--src/lib/libssl/ssl_lib.c25
-rw-r--r--src/regress/lib/libssl/unit/ssl_versions.c26
7 files changed, 117 insertions, 28 deletions
diff --git a/src/lib/libssl/Symbols.list b/src/lib/libssl/Symbols.list
index eb00c8d25a..a8ae29ccca 100644
--- a/src/lib/libssl/Symbols.list
+++ b/src/lib/libssl/Symbols.list
@@ -65,6 +65,8 @@ SSL_CTX_get_client_cert_cb
65SSL_CTX_get_ex_data 65SSL_CTX_get_ex_data
66SSL_CTX_get_ex_new_index 66SSL_CTX_get_ex_new_index
67SSL_CTX_get_info_callback 67SSL_CTX_get_info_callback
68SSL_CTX_get_min_proto_version
69SSL_CTX_get_max_proto_version
68SSL_CTX_get_quiet_shutdown 70SSL_CTX_get_quiet_shutdown
69SSL_CTX_get_timeout 71SSL_CTX_get_timeout
70SSL_CTX_get_verify_callback 72SSL_CTX_get_verify_callback
@@ -188,6 +190,8 @@ SSL_get_ex_new_index
188SSL_get_fd 190SSL_get_fd
189SSL_get_finished 191SSL_get_finished
190SSL_get_info_callback 192SSL_get_info_callback
193SSL_get_min_proto_version
194SSL_get_max_proto_version
191SSL_get_peer_cert_chain 195SSL_get_peer_cert_chain
192SSL_get_peer_certificate 196SSL_get_peer_certificate
193SSL_get_peer_finished 197SSL_get_peer_finished
diff --git a/src/lib/libssl/man/SSL_CTX_set_min_proto_version.3 b/src/lib/libssl/man/SSL_CTX_set_min_proto_version.3
index ff057cadac..38ac9fc421 100644
--- a/src/lib/libssl/man/SSL_CTX_set_min_proto_version.3
+++ b/src/lib/libssl/man/SSL_CTX_set_min_proto_version.3
@@ -1,8 +1,9 @@
1.\" $OpenBSD: SSL_CTX_set_min_proto_version.3,v 1.1 2017/08/19 23:45:10 schwarze Exp $ 1.\" $OpenBSD: SSL_CTX_set_min_proto_version.3,v 1.2 2018/03/15 12:27:01 jca Exp $
2.\" OpenSSL e9b77246 Jan 20 19:58:49 2017 +0100 2.\" full merge up to: OpenSSL 3edabd3c Sep 14 09:28:39 2017 +0200
3.\" 3.\"
4.\" This file was written by Kurt Roeckx <kurt@roeckx.be>. 4.\" This file was written by Kurt Roeckx <kurt@roeckx.be> and
5.\" Copyright (c) 2015 The OpenSSL Project. All rights reserved. 5.\" Christian Heimes <christian@python.org>.
6.\" Copyright (c) 2015, 2017 The OpenSSL Project. All rights reserved.
6.\" 7.\"
7.\" Redistribution and use in source and binary forms, with or without 8.\" Redistribution and use in source and binary forms, with or without
8.\" modification, are permitted provided that the following conditions 9.\" modification, are permitted provided that the following conditions
@@ -48,15 +49,19 @@
48.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 49.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
49.\" OF THE POSSIBILITY OF SUCH DAMAGE. 50.\" OF THE POSSIBILITY OF SUCH DAMAGE.
50.\" 51.\"
51.Dd $Mdocdate: August 19 2017 $ 52.Dd $Mdocdate: March 15 2018 $
52.Dt SSL_CTX_SET_MIN_PROTO_VERSION 3 53.Dt SSL_CTX_SET_MIN_PROTO_VERSION 3
53.Os 54.Os
54.Sh NAME 55.Sh NAME
55.Nm SSL_CTX_set_min_proto_version , 56.Nm SSL_CTX_set_min_proto_version ,
56.Nm SSL_CTX_set_max_proto_version , 57.Nm SSL_CTX_set_max_proto_version ,
58.Nm SSL_CTX_get_min_proto_version ,
59.Nm SSL_CTX_get_max_proto_version ,
57.Nm SSL_set_min_proto_version , 60.Nm SSL_set_min_proto_version ,
58.Nm SSL_set_max_proto_version 61.Nm SSL_set_max_proto_version ,
59.Nd set minimum and maximum supported protocol version 62.Nm SSL_get_min_proto_version ,
63.Nm SSL_get_max_proto_version
64.Nd get and set minimum and maximum supported protocol version
60.Sh SYNOPSIS 65.Sh SYNOPSIS
61.In openssl/ssl.h 66.In openssl/ssl.h
62.Ft int 67.Ft int
@@ -70,6 +75,14 @@
70.Fa "uint16_t version" 75.Fa "uint16_t version"
71.Fc 76.Fc
72.Ft int 77.Ft int
78.Fo SSL_CTX_get_min_proto_version
79.Fa "SSL_CTX *ctx"
80.Fc
81.Ft int
82.Fo SSL_CTX_get_max_proto_version
83.Fa "SSL_CTX *ctx"
84.Fc
85.Ft int
73.Fo SSL_set_min_proto_version 86.Fo SSL_set_min_proto_version
74.Fa "SSL *ssl" 87.Fa "SSL *ssl"
75.Fa "uint16_t version" 88.Fa "uint16_t version"
@@ -79,8 +92,16 @@
79.Fa "SSL *ssl" 92.Fa "SSL *ssl"
80.Fa "uint16_t version" 93.Fa "uint16_t version"
81.Fc 94.Fc
95.Ft int
96.Fo SSL_get_min_proto_version
97.Fa "SSL *ssl"
98.Fc
99.Ft int
100.Fo SSL_get_max_proto_version
101.Fa "SSL *ssl"
102.Fc
82.Sh DESCRIPTION 103.Sh DESCRIPTION
83These functions set the minimum and maximum supported protocol 104These functions get or set the minimum and maximum supported protocol
84versions for 105versions for
85.Fa ctx 106.Fa ctx
86or 107or
@@ -102,13 +123,32 @@ and
102for TLS and 123for TLS and
103.Sy DTLS1_VERSION 124.Sy DTLS1_VERSION
104for DTLS. 125for DTLS.
126.Pp
127In other implementations, these functions may be implemented as macros.
105.Sh RETURN VALUES 128.Sh RETURN VALUES
106These functions return 1 on success or 0 on failure. 129The setter functions return 1 on success or 0 on failure.
130.Pp
131The getter functions return the configured version or 0 if
132.Fa ctx
133or
134.Fa ssl
135has been configured to automatically use the lowest or highest
136version supported by the library.
107.Sh SEE ALSO 137.Sh SEE ALSO
108.Xr ssl 3 , 138.Xr ssl 3 ,
109.Xr SSL_CTX_new 3 , 139.Xr SSL_CTX_new 3 ,
110.Xr SSL_CTX_set_options 3 140.Xr SSL_CTX_set_options 3
111.Sh HISTORY 141.Sh HISTORY
112These functions first appeared in OpenSSL 1.1.0 142The setter functions first appeared in BoringSSL in December 2014,
113and have been available since 143with shorter names without the
144.Sy proto_
145part.
146Two years later, OpenSSL included them in their 1.1.0 release,
147gratuitiously changing the names; Google shrugged and adopted
148the longer names one month later.
149They have been available since
114.Ox 6.2 . 150.Ox 6.2 .
151.Pp
152The getter functions first appeared in OpenSSL 1.1.1
153and have been available since
154.Ox 6.3 .
diff --git a/src/lib/libssl/s3_lib.c b/src/lib/libssl/s3_lib.c
index 8f75cf9498..52e0c52410 100644
--- a/src/lib/libssl/s3_lib.c
+++ b/src/lib/libssl/s3_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: s3_lib.c,v 1.164 2018/02/17 15:08:21 jsing Exp $ */ 1/* $OpenBSD: s3_lib.c,v 1.165 2018/03/15 12:27:00 jca Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1984,6 +1984,12 @@ ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
1984 case SSL_CTRL_GET_SERVER_TMP_KEY: 1984 case SSL_CTRL_GET_SERVER_TMP_KEY:
1985 return ssl_ctrl_get_server_tmp_key(s, parg); 1985 return ssl_ctrl_get_server_tmp_key(s, parg);
1986 1986
1987 case SSL_CTRL_GET_MIN_PROTO_VERSION:
1988 return SSL_get_min_proto_version(s);
1989
1990 case SSL_CTRL_GET_MAX_PROTO_VERSION:
1991 return SSL_get_max_proto_version(s);
1992
1987 case SSL_CTRL_SET_MIN_PROTO_VERSION: 1993 case SSL_CTRL_SET_MIN_PROTO_VERSION:
1988 if (larg < 0 || larg > UINT16_MAX) 1994 if (larg < 0 || larg > UINT16_MAX)
1989 return 0; 1995 return 0;
@@ -2243,6 +2249,12 @@ ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
2243 case SSL_CTRL_SET_GROUPS_LIST: 2249 case SSL_CTRL_SET_GROUPS_LIST:
2244 return SSL_CTX_set1_groups_list(ctx, parg); 2250 return SSL_CTX_set1_groups_list(ctx, parg);
2245 2251
2252 case SSL_CTRL_GET_MIN_PROTO_VERSION:
2253 return SSL_CTX_get_min_proto_version(ctx);
2254
2255 case SSL_CTRL_GET_MAX_PROTO_VERSION:
2256 return SSL_CTX_get_max_proto_version(ctx);
2257
2246 case SSL_CTRL_SET_MIN_PROTO_VERSION: 2258 case SSL_CTRL_SET_MIN_PROTO_VERSION:
2247 if (larg < 0 || larg > UINT16_MAX) 2259 if (larg < 0 || larg > UINT16_MAX)
2248 return 0; 2260 return 0;
diff --git a/src/lib/libssl/shlib_version b/src/lib/libssl/shlib_version
index 5c09c51c65..c41c26c0f7 100644
--- a/src/lib/libssl/shlib_version
+++ b/src/lib/libssl/shlib_version
@@ -1,3 +1,3 @@
1# Don't forget to give libtls the same type of bump! 1# Don't forget to give libtls the same type of bump!
2major=44 2major=44
3minor=8 3minor=9
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h
index e6556fd136..5f9d248ced 100644
--- a/src/lib/libssl/ssl.h
+++ b/src/lib/libssl/ssl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl.h,v 1.146 2018/03/03 19:58:29 jca Exp $ */ 1/* $OpenBSD: ssl.h,v 1.147 2018/03/15 12:27:01 jca Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -1125,6 +1125,8 @@ int PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *x);
1125 1125
1126#define SSL_CTRL_SET_MIN_PROTO_VERSION 123 1126#define SSL_CTRL_SET_MIN_PROTO_VERSION 123
1127#define SSL_CTRL_SET_MAX_PROTO_VERSION 124 1127#define SSL_CTRL_SET_MAX_PROTO_VERSION 124
1128#define SSL_CTRL_GET_MIN_PROTO_VERSION 130
1129#define SSL_CTRL_GET_MAX_PROTO_VERSION 131
1128 1130
1129#define DTLSv1_get_timeout(ssl, arg) \ 1131#define DTLSv1_get_timeout(ssl, arg) \
1130 SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg) 1132 SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg)
@@ -1174,9 +1176,13 @@ int SSL_CTX_set1_groups_list(SSL_CTX *ctx, const char *groups);
1174int SSL_set1_groups(SSL *ssl, const int *groups, size_t groups_len); 1176int SSL_set1_groups(SSL *ssl, const int *groups, size_t groups_len);
1175int SSL_set1_groups_list(SSL *ssl, const char *groups); 1177int SSL_set1_groups_list(SSL *ssl, const char *groups);
1176 1178
1179int SSL_CTX_get_min_proto_version(SSL_CTX *ctx);
1180int SSL_CTX_get_max_proto_version(SSL_CTX *ctx);
1177int SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version); 1181int SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version);
1178int SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version); 1182int SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version);
1179 1183
1184int SSL_get_min_proto_version(SSL *ssl);
1185int SSL_get_max_proto_version(SSL *ssl);
1180int SSL_set_min_proto_version(SSL *ssl, uint16_t version); 1186int SSL_set_min_proto_version(SSL *ssl, uint16_t version);
1181int SSL_set_max_proto_version(SSL *ssl, uint16_t version); 1187int SSL_set_max_proto_version(SSL *ssl, uint16_t version);
1182 1188
@@ -1209,8 +1215,12 @@ int SSL_set_max_proto_version(SSL *ssl, uint16_t version);
1209#define SSL_CTX_set1_groups_list SSL_CTX_set1_groups_list 1215#define SSL_CTX_set1_groups_list SSL_CTX_set1_groups_list
1210#define SSL_set1_groups SSL_set1_groups 1216#define SSL_set1_groups SSL_set1_groups
1211#define SSL_set1_groups_list SSL_set1_groups_list 1217#define SSL_set1_groups_list SSL_set1_groups_list
1218#define SSL_CTX_get_min_proto_version SSL_CTX_get_min_proto_version
1219#define SSL_CTX_get_max_proto_version SSL_CTX_get_max_proto_version
1212#define SSL_CTX_set_min_proto_version SSL_CTX_set_min_proto_version 1220#define SSL_CTX_set_min_proto_version SSL_CTX_set_min_proto_version
1213#define SSL_CTX_set_max_proto_version SSL_CTX_set_max_proto_version 1221#define SSL_CTX_set_max_proto_version SSL_CTX_set_max_proto_version
1222#define SSL_get_min_proto_version SSL_get_min_proto_version
1223#define SSL_get_max_proto_version SSL_get_max_proto_version
1214#define SSL_set_min_proto_version SSL_set_min_proto_version 1224#define SSL_set_min_proto_version SSL_set_min_proto_version
1215#define SSL_set_max_proto_version SSL_set_max_proto_version 1225#define SSL_set_max_proto_version SSL_set_max_proto_version
1216#endif 1226#endif
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c
index 80a2bd7bfc..067f0edde4 100644
--- a/src/lib/libssl/ssl_lib.c
+++ b/src/lib/libssl/ssl_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_lib.c,v 1.179 2018/02/22 17:30:25 jsing Exp $ */ 1/* $OpenBSD: ssl_lib.c,v 1.180 2018/03/15 12:27:01 jca Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -3024,6 +3024,12 @@ SSL_cache_hit(SSL *s)
3024} 3024}
3025 3025
3026int 3026int
3027SSL_CTX_get_min_proto_version(SSL_CTX *ctx)
3028{
3029 return ctx->internal->min_version;
3030}
3031
3032int
3027SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version) 3033SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version)
3028{ 3034{
3029 return ssl_version_set_min(ctx->method, version, 3035 return ssl_version_set_min(ctx->method, version,
@@ -3031,6 +3037,12 @@ SSL_CTX_set_min_proto_version(SSL_CTX *ctx, uint16_t version)
3031} 3037}
3032 3038
3033int 3039int
3040SSL_CTX_get_max_proto_version(SSL_CTX *ctx)
3041{
3042 return ctx->internal->max_version;
3043}
3044
3045int
3034SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version) 3046SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version)
3035{ 3047{
3036 return ssl_version_set_max(ctx->method, version, 3048 return ssl_version_set_max(ctx->method, version,
@@ -3038,11 +3050,22 @@ SSL_CTX_set_max_proto_version(SSL_CTX *ctx, uint16_t version)
3038} 3050}
3039 3051
3040int 3052int
3053SSL_get_min_proto_version(SSL *ssl)
3054{
3055 return ssl->internal->min_version;
3056}
3057
3058int
3041SSL_set_min_proto_version(SSL *ssl, uint16_t version) 3059SSL_set_min_proto_version(SSL *ssl, uint16_t version)
3042{ 3060{
3043 return ssl_version_set_min(ssl->method, version, 3061 return ssl_version_set_min(ssl->method, version,
3044 ssl->internal->max_version, &ssl->internal->min_version); 3062 ssl->internal->max_version, &ssl->internal->min_version);
3045} 3063}
3064int
3065SSL_get_max_proto_version(SSL *ssl)
3066{
3067 return ssl->internal->max_version;
3068}
3046 3069
3047int 3070int
3048SSL_set_max_proto_version(SSL *ssl, uint16_t version) 3071SSL_set_max_proto_version(SSL *ssl, uint16_t version)
diff --git a/src/regress/lib/libssl/unit/ssl_versions.c b/src/regress/lib/libssl/unit/ssl_versions.c
index c12f115c19..d84a7106d5 100644
--- a/src/regress/lib/libssl/unit/ssl_versions.c
+++ b/src/regress/lib/libssl/unit/ssl_versions.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_versions.c,v 1.4 2017/05/06 20:39:03 jsing Exp $ */ 1/* $OpenBSD: ssl_versions.c,v 1.5 2018/03/15 12:27:01 jca Exp $ */
2/* 2/*
3 * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org> 3 * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org>
4 * 4 *
@@ -620,16 +620,16 @@ test_ssl_min_max_version(void)
620 goto next; 620 goto next;
621 } 621 }
622 622
623 if (ssl_ctx->internal->min_version != mmvt->want_minver) { 623 if (SSL_CTX_get_min_proto_version(ssl_ctx) != mmvt->want_minver) {
624 fprintf(stderr, "FAIL: test %zu - got SSL_CTX min " 624 fprintf(stderr, "FAIL: test %zu - got SSL_CTX min "
625 "version 0x%x, want 0x%x\n", i, 625 "version 0x%x, want 0x%x\n", i,
626 ssl_ctx->internal->min_version, mmvt->want_minver); 626 SSL_CTX_get_min_proto_version(ssl_ctx), mmvt->want_minver);
627 goto next; 627 goto next;
628 } 628 }
629 if (ssl_ctx->internal->max_version != mmvt->want_maxver) { 629 if (SSL_CTX_get_max_proto_version(ssl_ctx) != mmvt->want_maxver) {
630 fprintf(stderr, "FAIL: test %zu - got SSL_CTX max " 630 fprintf(stderr, "FAIL: test %zu - got SSL_CTX max "
631 "version 0x%x, want 0x%x\n", i, 631 "version 0x%x, want 0x%x\n", i,
632 ssl_ctx->internal->max_version, mmvt->want_maxver); 632 SSL_CTX_get_max_proto_version(ssl_ctx), mmvt->want_maxver);
633 goto next; 633 goto next;
634 } 634 }
635 635
@@ -638,16 +638,16 @@ test_ssl_min_max_version(void)
638 return 1; 638 return 1;
639 } 639 }
640 640
641 if (ssl->internal->min_version != mmvt->want_minver) { 641 if (SSL_get_min_proto_version(ssl) != mmvt->want_minver) {
642 fprintf(stderr, "FAIL: test %zu - initial SSL min " 642 fprintf(stderr, "FAIL: test %zu - initial SSL min "
643 "version 0x%x, want 0x%x\n", i, 643 "version 0x%x, want 0x%x\n", i,
644 ssl_ctx->internal->min_version, mmvt->want_minver); 644 SSL_get_min_proto_version(ssl), mmvt->want_minver);
645 goto next; 645 goto next;
646 } 646 }
647 if (ssl->internal->max_version != mmvt->want_maxver) { 647 if (SSL_get_max_proto_version(ssl) != mmvt->want_maxver) {
648 fprintf(stderr, "FAIL: test %zu - initial SSL max " 648 fprintf(stderr, "FAIL: test %zu - initial SSL max "
649 "version 0x%x, want 0x%x\n", i, 649 "version 0x%x, want 0x%x\n", i,
650 ssl_ctx->internal->max_version, mmvt->want_maxver); 650 SSL_get_max_proto_version(ssl), mmvt->want_maxver);
651 goto next; 651 goto next;
652 } 652 }
653 653
@@ -679,16 +679,16 @@ test_ssl_min_max_version(void)
679 goto next; 679 goto next;
680 } 680 }
681 681
682 if (ssl->internal->min_version != mmvt->want_minver) { 682 if (SSL_get_min_proto_version(ssl) != mmvt->want_minver) {
683 fprintf(stderr, "FAIL: test %zu - got SSL min " 683 fprintf(stderr, "FAIL: test %zu - got SSL min "
684 "version 0x%x, want 0x%x\n", i, 684 "version 0x%x, want 0x%x\n", i,
685 ssl_ctx->internal->min_version, mmvt->want_minver); 685 SSL_get_min_proto_version(ssl), mmvt->want_minver);
686 goto next; 686 goto next;
687 } 687 }
688 if (ssl->internal->max_version != mmvt->want_maxver) { 688 if (SSL_get_max_proto_version(ssl) != mmvt->want_maxver) {
689 fprintf(stderr, "FAIL: test %zu - got SSL max " 689 fprintf(stderr, "FAIL: test %zu - got SSL max "
690 "version 0x%x, want 0x%x\n", i, 690 "version 0x%x, want 0x%x\n", i,
691 ssl->internal->max_version, mmvt->want_maxver); 691 SSL_get_max_proto_version(ssl), mmvt->want_maxver);
692 goto next; 692 goto next;
693 } 693 }
694 694