]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_apple_csp/lib/opensshCoding.cpp
Security-58286.260.20.tar.gz
[apple/security.git] / OSX / libsecurity_apple_csp / lib / opensshCoding.cpp
index e9f90ba318d94c24145af4f881180b41d6242125..5a42320cf512efc44e4dbc6f4497276925ddf319 100644 (file)
@@ -29,8 +29,8 @@
 
 #include "opensshCoding.h"
 #include <CoreFoundation/CFData.h>
-#include <openssl/bn.h>
-#include <openssl/crypto.h>
+#include <openssl/bn_legacy.h>
+#include <openssl/crypto_legacy.h>
 #include <security_cdsa_utils/cuEnc64.h>
 
 #define SSH2_RSA_HEADER                "ssh-rsa"
@@ -111,10 +111,15 @@ static CSSM_RETURN appendBigNum2(
                return CSSMERR_CSP_INTERNAL_ERROR;
        }
        int numBytes = BN_num_bytes(bn);
-       unsigned char buf[numBytes];
+       unsigned char *buf = (unsigned char*)malloc(numBytes);
+       if (buf == NULL) {
+               dprintf("appendBigNum: Cannot allocate a temp BN buffer\n");
+               return CSSMERR_CSSM_MEMORY_ERROR;
+       }
        int moved = BN_bn2bin(bn, buf);
        if(moved != numBytes) {
                dprintf("appendBigNum: BN_bn2bin() screwup\n");
+               free(buf);
                return CSSMERR_CSP_INTERNAL_ERROR;
        }
        bool appendZero = false;
@@ -131,6 +136,7 @@ static CSSM_RETURN appendBigNum2(
        }
        CFDataAppendBytes(cfOut, buf, numBytes);
        memset(buf, 0, numBytes);
+       free(buf);
        return CSSM_OK;
 }