summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_lib.c')
-rw-r--r--src/lib/libssl/ssl_lib.c30
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 */
1310char *SSL_get_shared_ciphers(const SSL *s,char *buf,int len) 1307char *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