Fix cipher_compare
authorRichard Levitte <levitte@openssl.org>
Sat, 8 Jul 2017 20:13:24 +0000 (22:13 +0200)
committerRichard Levitte <levitte@openssl.org>
Sun, 9 Jul 2017 06:51:47 +0000 (08:51 +0200)
Unsigned overflow.  Found by Brian Carpenter

Fixes #3889

Reviewed-by: Tim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3890)

(cherry picked from commit a7ff57965b81ce4fd73a18266ce29abf6b909fdb)

ssl/s3_lib.c

index d45a2469b5ae34e8e5b301b67347e39143f6748c..9ea02dc0742b234301d4f9dd29ec909b50544d2b 100644 (file)
@@ -2725,7 +2725,9 @@ static int cipher_compare(const void *a, const void *b)
     const SSL_CIPHER *ap = (const SSL_CIPHER *)a;
     const SSL_CIPHER *bp = (const SSL_CIPHER *)b;
 
-    return ap->id - bp->id;
+    if (ap->id == bp->id)
+        return 0;
+    return ap->id < bp->id ? -1 : 1;
 }
 
 void ssl_sort_cipher_list(void)