]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/emv/crypto_polarssl.c
FIX: crash on Bionic libc if CloseProxmark is called twice. (#672)
[proxmark3-svn] / client / emv / crypto_polarssl.c
index 3d11afe5e2b73c7fea79ff1fba6990e7dfbf5b5f..5a3db8eae4803f3e7f44dcb5620c110886e22132 100644 (file)
@@ -105,7 +105,7 @@ static struct crypto_pk *crypto_pk_polarssl_open_rsa(va_list vl)
        int res = rsa_check_pubkey(&cp->ctx);
        if(res != 0) {
                fprintf(stderr, "PolarSSL public key error res=%x exp=%d mod=%d.\n", res * -1, explen, modlen);
-
+               free(cp);
                return NULL;
        }
 
@@ -150,6 +150,7 @@ static struct crypto_pk *crypto_pk_polarssl_open_priv_rsa(va_list vl)
        int res = rsa_check_privkey(&cp->ctx);
        if(res != 0) {
                fprintf(stderr, "PolarSSL private key error res=%x exp=%d mod=%d.\n", res * -1, explen, modlen);
+               free(cp);
                return NULL;
        }
 
@@ -184,6 +185,7 @@ static struct crypto_pk *crypto_pk_polarssl_genkey_rsa(va_list vl)
        int res = rsa_gen_key(&cp->ctx, &myrand, NULL, nbits, exp);
        if (res) {
                fprintf(stderr, "PolarSSL private key generation error res=%x exp=%d nbits=%d.\n", res * -1, exp, nbits);
+               free(cp);
                return NULL;
        }
        
@@ -216,6 +218,7 @@ static unsigned char *crypto_pk_polarssl_encrypt(const struct crypto_pk *_cp, co
        res = rsa_public(&cp->ctx, buf, result);
        if(res) {
                printf("RSA encrypt failed. Error: %x data len: %zd key len: %zd\n", res * -1, len, keylen);
+               free(result);
                return NULL;
        }
        
@@ -242,6 +245,7 @@ static unsigned char *crypto_pk_polarssl_decrypt(const struct crypto_pk *_cp, co
        res = rsa_private(&cp->ctx, buf, result); // CHECK???
        if(res) {
                printf("RSA decrypt failed. Error: %x data len: %zd key len: %zd\n", res * -1, len, keylen);
+               free(result);
                return NULL;
        }
        
Impressum, Datenschutz