Add support for memory leak checking in fips_algvs.
[openssl.git] / fips / aes / fips_gcmtest.c
index 6d0563b6952ac1cbe8639823e89d12e5c8a1e93b..02849bc2ab6f1f9758ad6f5c15f0dc52f72ff323 100644 (file)
@@ -243,7 +243,7 @@ static void gcmtest(FILE *in, FILE *out, int encrypt)
                                }
                        rv = FIPS_cipher(&ctx, NULL, NULL, 0);
                        if (rv < 0)
-                               fprintf(out, "FAIL\n");
+                               fprintf(out, "FAIL" RESP_EOL);
                        else
                                OutputValue("PT", pt, ptlen, out, 0);
                        if (iv)
@@ -261,14 +261,15 @@ static void gcmtest(FILE *in, FILE *out, int encrypt)
                        iv = aad = ct = pt = key = tag = NULL;
                        }
                }
+       FIPS_cipher_ctx_cleanup(&ctx);  
        }
 
 static void xtstest(FILE *in, FILE *out)
        {
-       char buf[2048];
-       char lbuf[2048];
+       char buf[204800];
+       char lbuf[204800];
        char *keyword, *value;
-       int inlen;
+       int inlen = 0;
        int encrypt = 0;
        int rv;
        long l;
@@ -335,12 +336,13 @@ static void xtstest(FILE *in, FILE *out)
                        iv = key = inbuf = outbuf = NULL;
                        }       
                }
+       FIPS_cipher_ctx_cleanup(&ctx);  
        }
 
 static void ccmtest(FILE *in, FILE *out)
        {
-       char buf[2048];
-       char lbuf[2048];
+       char buf[200048];
+       char lbuf[200048];
        char *keyword, *value;
        long l;
        unsigned char *Key = NULL, *Nonce = NULL;
@@ -376,6 +378,7 @@ static void ccmtest(FILE *in, FILE *out)
                        {
                        *p = 0;
                        strcpy(buf, p + 1);
+                       strcat(buf, "\n");
                        decr = 1;
                        }
                if (!strcmp(keyword,"Plen"))
@@ -427,6 +430,8 @@ static void ccmtest(FILE *in, FILE *out)
                        }
                else if (!strcmp(keyword,"Adata"))
                        {
+                       if (Adata)
+                               OPENSSL_free(Adata);
                        Adata = hex2bin_m(value, &l);
                        if (Alen && l != Alen)
                                {
@@ -478,11 +483,11 @@ static void ccmtest(FILE *in, FILE *out)
                                {
                                if (rv == 0)
                                        Payload[0] = 0;
-                               fputs("Result = Pass\n", out);
+                               fputs("Result = Pass" RESP_EOL, out);
                                OutputValue("Payload", Payload, len, out, 0);
                                }
                        else
-                               fputs("Result = Fail\n", out);
+                               fputs("Result = Fail" RESP_EOL, out);
                        OPENSSL_free(CT);
                        OPENSSL_free(Payload);
                        CT = Payload = NULL;
@@ -492,10 +497,16 @@ static void ccmtest(FILE *in, FILE *out)
                OPENSSL_free(Key);
        if (Nonce)
                OPENSSL_free(Nonce);
+       if (Adata)
+               OPENSSL_free(Adata);
        FIPS_cipher_ctx_cleanup(&ctx);
        }
 
-int main(int argc,char **argv)
+#ifdef FIPS_ALGVS
+int fips_gcmtest_main(int argc, char **argv)
+#else
+int main(int argc, char **argv)
+#endif
        {
        int encrypt;
        int xts = 0, ccm = 0;