Fix double array increment in s_client mysql connect
authorSteven Danneman <sdanneman@securityinnovation.com>
Tue, 27 Jun 2017 22:53:11 +0000 (15:53 -0700)
committerRich Salz <rsalz@openssl.org>
Thu, 29 Jun 2017 12:20:14 +0000 (08:20 -0400)
The packet parsing code for the server version string was incrementing
the array index twice on every iteration. This meant that strings with
an even number of characters would pass, but strings with an odd number
(ex: 5.7.18-0ubuntu0.16.04.1) would cause the pos variable to get out
of sync.

This would cause a later failure with "MySQL packet is broken."

CLA: trivial

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3799)

apps/s_client.c

index 393b311904a1d418be71b0049358f65feff67c63..56209ac0f648de0053b8bbc473918c623b85efc8 100644 (file)
@@ -2406,10 +2406,9 @@ int s_client_main(int argc, char **argv)
                 } else if (packet[pos++] == '\0') {
                     break;
                 }
-                pos++;
             }
 
-            /* make sure we have more 15 bytes left in the packet */
+            /* make sure we have at least 15 bytes left in the packet */
             if (pos + 15 > bytes) {
                 BIO_printf(bio_err,
                            "MySQL server handshake packet is broken.\n");