]> granicus.if.org Git - curl/commitdiff
openssl: fix version report for the 0.9.8 branch
authorJose Alf <josealf@rocketmail.com>
Wed, 13 Aug 2014 06:47:56 +0000 (08:47 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 13 Aug 2014 06:49:19 +0000 (08:49 +0200)
Fixed libcurl to correctly output the newer versions of OpenSSL 0.9.8,
starting from openssl-0.9.8za.

lib/vtls/openssl.c

index 62d86c01713768df9c782e0f5c68495950dcc7d0..10f13385ce8df46aea28f3c884cd5a7082c239f2 100644 (file)
@@ -2824,8 +2824,9 @@ size_t Curl_ossl_version(char *buffer, size_t size)
 
 #if(SSLEAY_VERSION_NUMBER >= 0x905000)
   {
-    char sub[2];
+    char sub[3];
     unsigned long ssleay_value;
+    sub[2]='\0';
     sub[1]='\0';
     ssleay_value=SSLeay();
     if(ssleay_value < 0x906000) {
@@ -2834,7 +2835,14 @@ size_t Curl_ossl_version(char *buffer, size_t size)
     }
     else {
       if(ssleay_value&0xff0) {
-        sub[0]=(char)(((ssleay_value>>4)&0xff) + 'a' -1);
+        int minor = (ssleay_value >> 4) & 0xff;
+        if(minor > 26) { /* handle extended version introduced for 0.9.8za */
+          sub[1] = (char) ((minor - 1) % 26 + 'a' + 1);
+          sub[0] = 'z';
+        }
+        else {
+          sub[0]=(char)(((ssleay_value>>4)&0xff) + 'a' -1);
+        }
       }
       else
         sub[0]='\0';