aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtls/tls.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libtls/tls.c')
-rw-r--r--src/libtls/tls.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/libtls/tls.c b/src/libtls/tls.c
index da3b5b4f0..d46ce0084 100644
--- a/src/libtls/tls.c
+++ b/src/libtls/tls.c
@@ -146,10 +146,25 @@ METHOD(tls_t, get_version, tls_version_t,
return this->version;
}
-METHOD(tls_t, set_version, void,
+METHOD(tls_t, set_version, bool,
private_tls_t *this, tls_version_t version)
{
- this->version = version;
+ if (version > this->version)
+ {
+ return FALSE;
+ }
+ switch (version)
+ {
+ case TLS_1_0:
+ case TLS_1_1:
+ case TLS_1_2:
+ this->version = version;
+ return TRUE;
+ case SSL_2_0:
+ case SSL_3_0:
+ default:
+ return FALSE;
+ }
}
METHOD(tls_t, get_purpose, tls_purpose_t,