diff options
Diffstat (limited to 'src/lib/libssl/ssl_lib.c')
| -rw-r--r-- | src/lib/libssl/ssl_lib.c | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c index 8e89911f48..a3c9309488 100644 --- a/src/lib/libssl/ssl_lib.c +++ b/src/lib/libssl/ssl_lib.c | |||
| @@ -1054,9 +1054,6 @@ long SSL_ctrl(SSL *s,int cmd,long larg,void *parg) | |||
| 1054 | s->max_cert_list=larg; | 1054 | s->max_cert_list=larg; |
| 1055 | return(l); | 1055 | return(l); |
| 1056 | case SSL_CTRL_SET_MTU: | 1056 | case SSL_CTRL_SET_MTU: |
| 1057 | if (larg < (long)dtls1_min_mtu()) | ||
| 1058 | return 0; | ||
| 1059 | |||
| 1060 | if (SSL_version(s) == DTLS1_VERSION || | 1057 | if (SSL_version(s) == DTLS1_VERSION || |
| 1061 | SSL_version(s) == DTLS1_BAD_VER) | 1058 | SSL_version(s) == DTLS1_BAD_VER) |
| 1062 | { | 1059 | { |
| @@ -1309,36 +1306,33 @@ int SSL_set_cipher_list(SSL *s,const char *str) | |||
| 1309 | /* works well for SSLv2, not so good for SSLv3 */ | 1306 | /* works well for SSLv2, not so good for SSLv3 */ |
| 1310 | char *SSL_get_shared_ciphers(const SSL *s,char *buf,int len) | 1307 | char *SSL_get_shared_ciphers(const SSL *s,char *buf,int len) |
| 1311 | { | 1308 | { |
| 1312 | char *p; | 1309 | char *end; |
| 1313 | STACK_OF(SSL_CIPHER) *sk; | 1310 | STACK_OF(SSL_CIPHER) *sk; |
| 1314 | SSL_CIPHER *c; | 1311 | SSL_CIPHER *c; |
| 1312 | size_t curlen = 0; | ||
| 1315 | int i; | 1313 | int i; |
| 1316 | 1314 | ||
| 1317 | if ((s->session == NULL) || (s->session->ciphers == NULL) || | 1315 | if ((s->session == NULL) || (s->session->ciphers == NULL) || |
| 1318 | (len < 2)) | 1316 | (len < 2)) |
| 1319 | return(NULL); | 1317 | return(NULL); |
| 1320 | 1318 | ||
| 1321 | p=buf; | ||
| 1322 | sk=s->session->ciphers; | 1319 | sk=s->session->ciphers; |
| 1320 | buf[0] = '\0'; | ||
| 1323 | for (i=0; i<sk_SSL_CIPHER_num(sk); i++) | 1321 | for (i=0; i<sk_SSL_CIPHER_num(sk); i++) |
| 1324 | { | 1322 | { |
| 1325 | int n; | ||
| 1326 | |||
| 1327 | c=sk_SSL_CIPHER_value(sk,i); | 1323 | c=sk_SSL_CIPHER_value(sk,i); |
| 1328 | n=strlen(c->name); | 1324 | end = buf + curlen; |
| 1329 | if (n+1 > len) | 1325 | if (strlcat(buf, c->name, len) >= len || |
| 1326 | (curlen = strlcat(buf, ":", len)) >= len) | ||
| 1330 | { | 1327 | { |
| 1331 | if (p != buf) | 1328 | /* remove truncated cipher from list */ |
| 1332 | --p; | 1329 | *end = '\0'; |
| 1333 | *p='\0'; | 1330 | break; |
| 1334 | return buf; | ||
| 1335 | } | 1331 | } |
| 1336 | strcpy(p,c->name); | ||
| 1337 | p+=n; | ||
| 1338 | *(p++)=':'; | ||
| 1339 | len-=n+1; | ||
| 1340 | } | 1332 | } |
| 1341 | p[-1]='\0'; | 1333 | /* remove trailing colon */ |
| 1334 | if ((end = strrchr(buf, ':')) != NULL) | ||
| 1335 | *end = '\0'; | ||
| 1342 | return(buf); | 1336 | return(buf); |
| 1343 | } | 1337 | } |
| 1344 | 1338 | ||
