crypto/evp/evp_test.c:387: error: UNINITIALIZED_VALUE
  The value read from outl2 was never initialized.
Showing all 1 steps of the trace


crypto/evp/evp_test.c:387:5: 
385.   	    }
386.   
387. > 	if(outl+outl2 != pn)
388.   	    {
389.   	    fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",

static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
		  const unsigned char *iv,int in,
		  const unsigned char *plaintext,int pn,
		  const unsigned char *ciphertext,int cn,
		  const unsigned char *aad,int an,
		  const unsigned char *tag,int tn,
		  int encdec)
    {
    EVP_CIPHER_CTX ctx;
    unsigned char out[4096];
    int outl,outl2,mode;
    printf("Testing cipher %s%s\n",EVP_CIPHER_name(c),
	   (encdec == 1 ? "(encrypt)" : (encdec == 0 ? "(decrypt)" : "(encrypt/decrypt)")));
    hexdump(stdout,"Key",key,kn);
    if(in)
	hexdump(stdout,"IV",iv,in);
    hexdump(stdout,"Plaintext",plaintext,pn);
    hexdump(stdout,"Ciphertext",ciphertext,cn);
    if (an)
    	hexdump(stdout,"AAD",aad,an);
    if (tn)
    	hexdump(stdout,"Tag",tag,tn);
    mode = EVP_CIPHER_mode(c);
    if(kn != EVP_CIPHER_key_length(c))
	{
	fprintf(stderr,"Key length doesn't match, got %d expected %lu\n",kn,
		(unsigned long)EVP_CIPHER_key_length(c));
	test1_exit(5);
	}
    EVP_CIPHER_CTX_init(&ctx);
    if (encdec != 0)
        {
	if (mode == EVP_CIPH_GCM_MODE)
	    {
	    if(!EVP_EncryptInit_ex(&ctx,c,NULL,NULL,NULL))
	        {
		fprintf(stderr,"EncryptInit failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(10);
		}
	    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, in, NULL))
	        {
		fprintf(stderr,"IV length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(11);
		}
	    if(!EVP_EncryptInit_ex(&ctx,NULL,NULL,key,iv))
	        {
		fprintf(stderr,"Key/IV set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(12);
		}
	    if (an && !EVP_EncryptUpdate(&ctx,NULL,&outl,aad,an))
	        {
		fprintf(stderr,"AAD set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(13);
		}
	    }
	else if (mode == EVP_CIPH_CCM_MODE)
	    {
	    if(!EVP_EncryptInit_ex(&ctx,c,NULL,NULL,NULL))
	        {
		fprintf(stderr,"EncryptInit failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(10);
		}
	    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, in, NULL))
	        {
		fprintf(stderr,"IV length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(11);
		}
	    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, tn, NULL))
	        {
		fprintf(stderr,"Tag length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(11);
		}
	    if(!EVP_EncryptInit_ex(&ctx,NULL,NULL,key,iv))
	        {
		fprintf(stderr,"Key/IV set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(12);
		}
	    if (!EVP_EncryptUpdate(&ctx,NULL,&outl,NULL,pn))
	        {
		fprintf(stderr,"Plaintext length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(12);
		}
	    if (an && !EVP_EncryptUpdate(&ctx,NULL,&outl,aad,an))
	        {
		fprintf(stderr,"AAD set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(13);
		}
	    }
	else if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv))
	    {
	    fprintf(stderr,"EncryptInit failed\n");
	    ERR_print_errors_fp(stderr);
	    test1_exit(10);
	    }
	EVP_CIPHER_CTX_set_padding(&ctx,0);
	if(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn))
	    {
	    fprintf(stderr,"Encrypt failed\n");
	    ERR_print_errors_fp(stderr);
	    test1_exit(6);
	    }
	if(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2))
	    {
	    fprintf(stderr,"EncryptFinal failed\n");
	    ERR_print_errors_fp(stderr);
	    test1_exit(7);
	    }
	if(outl+outl2 != cn)
	    {
	    fprintf(stderr,"Ciphertext length mismatch got %d expected %d\n",
		    outl+outl2,cn);
	    test1_exit(8);
	    }
	if(memcmp(out,ciphertext,cn))
	    {
	    fprintf(stderr,"Ciphertext mismatch\n");
	    hexdump(stderr,"Got",out,cn);
	    hexdump(stderr,"Expected",ciphertext,cn);
	    test1_exit(9);
	    }
	if (mode == EVP_CIPH_GCM_MODE || mode == EVP_CIPH_CCM_MODE)
	    {
	    unsigned char rtag[16];
	    if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_GET_TAG, tn, rtag))
	        {
		fprintf(stderr,"Get tag failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(14);
		}
	    if (memcmp(rtag, tag, tn))
		{
		fprintf(stderr,"Tag mismatch\n");
		hexdump(stderr,"Got",rtag,tn);
		hexdump(stderr,"Expected",tag,tn);
		test1_exit(9);
	    	}
	    }
	}
    if (encdec <= 0)
        {
	if (mode == EVP_CIPH_GCM_MODE)
	    {
	    if(!EVP_DecryptInit_ex(&ctx,c,NULL,NULL,NULL))
	        {
		fprintf(stderr,"EncryptInit failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(10);
		}
	    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, in, NULL))
	        {
		fprintf(stderr,"IV length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(11);
		}
	    if(!EVP_DecryptInit_ex(&ctx,NULL,NULL,key,iv))
	        {
		fprintf(stderr,"Key/IV set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(12);
		}
	    if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, tn, (void *)tag))
	        {
		fprintf(stderr,"Set tag failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(14);
		}
	    if (an && !EVP_DecryptUpdate(&ctx,NULL,&outl,aad,an))
	        {
		fprintf(stderr,"AAD set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(13);
		}
	    }
	else if (mode == EVP_CIPH_CCM_MODE)
	    {
	    if(!EVP_DecryptInit_ex(&ctx,c,NULL,NULL,NULL))
	        {
		fprintf(stderr,"DecryptInit failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(10);
		}
	    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, in, NULL))
	        {
		fprintf(stderr,"IV length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(11);
		}
	    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, tn, (void *)tag))
	        {
		fprintf(stderr,"Tag length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(11);
		}
	    if(!EVP_DecryptInit_ex(&ctx,NULL,NULL,key,iv))
	        {
		fprintf(stderr,"Key/Nonce set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(12);
		}
	    if (!EVP_DecryptUpdate(&ctx,NULL,&outl,NULL,pn))
	        {
		fprintf(stderr,"Plaintext length set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(12);
		}
	    if (an && !EVP_EncryptUpdate(&ctx,NULL,&outl,aad,an))
	        {
		fprintf(stderr,"AAD set failed\n");
		ERR_print_errors_fp(stderr);
		test1_exit(13);
		}
	    }
	else if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv))
	    {
	    fprintf(stderr,"DecryptInit failed\n");
	    ERR_print_errors_fp(stderr);
	    test1_exit(11);
	    }
	EVP_CIPHER_CTX_set_padding(&ctx,0);
	if(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn))
	    {
	    fprintf(stderr,"Decrypt failed\n");
	    ERR_print_errors_fp(stderr);
	    test1_exit(6);
	    }
	if(mode != EVP_CIPH_CCM_MODE && !EVP_DecryptFinal_ex(&ctx,out+outl,&outl2))
	    {
	    fprintf(stderr,"DecryptFinal failed\n");
	    ERR_print_errors_fp(stderr);
	    test1_exit(7);
	    }
	if(outl+outl2 != pn)
	    {
	    fprintf(stderr,"Plaintext length mismatch got %d expected %d\n",
		    outl+outl2,pn);
	    test1_exit(8);
	    }
	if(memcmp(out,plaintext,pn))
	    {
	    fprintf(stderr,"Plaintext mismatch\n");
	    hexdump(stderr,"Got",out,pn);
	    hexdump(stderr,"Expected",plaintext,pn);
	    test1_exit(9);
	    }
	}
    EVP_CIPHER_CTX_cleanup(&ctx);
    printf("\n");
    }
['static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,\n\t\t  const unsigned char *iv,int in,\n\t\t  const unsigned char *plaintext,int pn,\n\t\t  const unsigned char *ciphertext,int cn,\n\t\t  const unsigned char *aad,int an,\n\t\t  const unsigned char *tag,int tn,\n\t\t  int encdec)\n    {\n    EVP_CIPHER_CTX ctx;\n    unsigned char out[4096];\n    int outl,outl2,mode;\n    printf("Testing cipher %s%s\\n",EVP_CIPHER_name(c),\n\t   (encdec == 1 ? "(encrypt)" : (encdec == 0 ? "(decrypt)" : "(encrypt/decrypt)")));\n    hexdump(stdout,"Key",key,kn);\n    if(in)\n\thexdump(stdout,"IV",iv,in);\n    hexdump(stdout,"Plaintext",plaintext,pn);\n    hexdump(stdout,"Ciphertext",ciphertext,cn);\n    if (an)\n    \thexdump(stdout,"AAD",aad,an);\n    if (tn)\n    \thexdump(stdout,"Tag",tag,tn);\n    mode = EVP_CIPHER_mode(c);\n    if(kn != EVP_CIPHER_key_length(c))\n\t{\n\tfprintf(stderr,"Key length doesn\'t match, got %d expected %lu\\n",kn,\n\t\t(unsigned long)EVP_CIPHER_key_length(c));\n\ttest1_exit(5);\n\t}\n    EVP_CIPHER_CTX_init(&ctx);\n    if (encdec != 0)\n        {\n\tif (mode == EVP_CIPH_GCM_MODE)\n\t    {\n\t    if(!EVP_EncryptInit_ex(&ctx,c,NULL,NULL,NULL))\n\t        {\n\t\tfprintf(stderr,"EncryptInit failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(10);\n\t\t}\n\t    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, in, NULL))\n\t        {\n\t\tfprintf(stderr,"IV length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(11);\n\t\t}\n\t    if(!EVP_EncryptInit_ex(&ctx,NULL,NULL,key,iv))\n\t        {\n\t\tfprintf(stderr,"Key/IV set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(12);\n\t\t}\n\t    if (an && !EVP_EncryptUpdate(&ctx,NULL,&outl,aad,an))\n\t        {\n\t\tfprintf(stderr,"AAD set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(13);\n\t\t}\n\t    }\n\telse if (mode == EVP_CIPH_CCM_MODE)\n\t    {\n\t    if(!EVP_EncryptInit_ex(&ctx,c,NULL,NULL,NULL))\n\t        {\n\t\tfprintf(stderr,"EncryptInit failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(10);\n\t\t}\n\t    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, in, NULL))\n\t        {\n\t\tfprintf(stderr,"IV length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(11);\n\t\t}\n\t    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, tn, NULL))\n\t        {\n\t\tfprintf(stderr,"Tag length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(11);\n\t\t}\n\t    if(!EVP_EncryptInit_ex(&ctx,NULL,NULL,key,iv))\n\t        {\n\t\tfprintf(stderr,"Key/IV set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(12);\n\t\t}\n\t    if (!EVP_EncryptUpdate(&ctx,NULL,&outl,NULL,pn))\n\t        {\n\t\tfprintf(stderr,"Plaintext length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(12);\n\t\t}\n\t    if (an && !EVP_EncryptUpdate(&ctx,NULL,&outl,aad,an))\n\t        {\n\t\tfprintf(stderr,"AAD set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(13);\n\t\t}\n\t    }\n\telse if(!EVP_EncryptInit_ex(&ctx,c,NULL,key,iv))\n\t    {\n\t    fprintf(stderr,"EncryptInit failed\\n");\n\t    ERR_print_errors_fp(stderr);\n\t    test1_exit(10);\n\t    }\n\tEVP_CIPHER_CTX_set_padding(&ctx,0);\n\tif(!EVP_EncryptUpdate(&ctx,out,&outl,plaintext,pn))\n\t    {\n\t    fprintf(stderr,"Encrypt failed\\n");\n\t    ERR_print_errors_fp(stderr);\n\t    test1_exit(6);\n\t    }\n\tif(!EVP_EncryptFinal_ex(&ctx,out+outl,&outl2))\n\t    {\n\t    fprintf(stderr,"EncryptFinal failed\\n");\n\t    ERR_print_errors_fp(stderr);\n\t    test1_exit(7);\n\t    }\n\tif(outl+outl2 != cn)\n\t    {\n\t    fprintf(stderr,"Ciphertext length mismatch got %d expected %d\\n",\n\t\t    outl+outl2,cn);\n\t    test1_exit(8);\n\t    }\n\tif(memcmp(out,ciphertext,cn))\n\t    {\n\t    fprintf(stderr,"Ciphertext mismatch\\n");\n\t    hexdump(stderr,"Got",out,cn);\n\t    hexdump(stderr,"Expected",ciphertext,cn);\n\t    test1_exit(9);\n\t    }\n\tif (mode == EVP_CIPH_GCM_MODE || mode == EVP_CIPH_CCM_MODE)\n\t    {\n\t    unsigned char rtag[16];\n\t    if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_GET_TAG, tn, rtag))\n\t        {\n\t\tfprintf(stderr,"Get tag failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(14);\n\t\t}\n\t    if (memcmp(rtag, tag, tn))\n\t\t{\n\t\tfprintf(stderr,"Tag mismatch\\n");\n\t\thexdump(stderr,"Got",rtag,tn);\n\t\thexdump(stderr,"Expected",tag,tn);\n\t\ttest1_exit(9);\n\t    \t}\n\t    }\n\t}\n    if (encdec <= 0)\n        {\n\tif (mode == EVP_CIPH_GCM_MODE)\n\t    {\n\t    if(!EVP_DecryptInit_ex(&ctx,c,NULL,NULL,NULL))\n\t        {\n\t\tfprintf(stderr,"EncryptInit failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(10);\n\t\t}\n\t    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, in, NULL))\n\t        {\n\t\tfprintf(stderr,"IV length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(11);\n\t\t}\n\t    if(!EVP_DecryptInit_ex(&ctx,NULL,NULL,key,iv))\n\t        {\n\t\tfprintf(stderr,"Key/IV set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(12);\n\t\t}\n\t    if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, tn, (void *)tag))\n\t        {\n\t\tfprintf(stderr,"Set tag failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(14);\n\t\t}\n\t    if (an && !EVP_DecryptUpdate(&ctx,NULL,&outl,aad,an))\n\t        {\n\t\tfprintf(stderr,"AAD set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(13);\n\t\t}\n\t    }\n\telse if (mode == EVP_CIPH_CCM_MODE)\n\t    {\n\t    if(!EVP_DecryptInit_ex(&ctx,c,NULL,NULL,NULL))\n\t        {\n\t\tfprintf(stderr,"DecryptInit failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(10);\n\t\t}\n\t    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_IVLEN, in, NULL))\n\t        {\n\t\tfprintf(stderr,"IV length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(11);\n\t\t}\n\t    if(!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_CCM_SET_TAG, tn, (void *)tag))\n\t        {\n\t\tfprintf(stderr,"Tag length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(11);\n\t\t}\n\t    if(!EVP_DecryptInit_ex(&ctx,NULL,NULL,key,iv))\n\t        {\n\t\tfprintf(stderr,"Key/Nonce set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(12);\n\t\t}\n\t    if (!EVP_DecryptUpdate(&ctx,NULL,&outl,NULL,pn))\n\t        {\n\t\tfprintf(stderr,"Plaintext length set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(12);\n\t\t}\n\t    if (an && !EVP_EncryptUpdate(&ctx,NULL,&outl,aad,an))\n\t        {\n\t\tfprintf(stderr,"AAD set failed\\n");\n\t\tERR_print_errors_fp(stderr);\n\t\ttest1_exit(13);\n\t\t}\n\t    }\n\telse if(!EVP_DecryptInit_ex(&ctx,c,NULL,key,iv))\n\t    {\n\t    fprintf(stderr,"DecryptInit failed\\n");\n\t    ERR_print_errors_fp(stderr);\n\t    test1_exit(11);\n\t    }\n\tEVP_CIPHER_CTX_set_padding(&ctx,0);\n\tif(!EVP_DecryptUpdate(&ctx,out,&outl,ciphertext,cn))\n\t    {\n\t    fprintf(stderr,"Decrypt failed\\n");\n\t    ERR_print_errors_fp(stderr);\n\t    test1_exit(6);\n\t    }\n\tif(mode != EVP_CIPH_CCM_MODE && !EVP_DecryptFinal_ex(&ctx,out+outl,&outl2))\n\t    {\n\t    fprintf(stderr,"DecryptFinal failed\\n");\n\t    ERR_print_errors_fp(stderr);\n\t    test1_exit(7);\n\t    }\n\tif(outl+outl2 != pn)\n\t    {\n\t    fprintf(stderr,"Plaintext length mismatch got %d expected %d\\n",\n\t\t    outl+outl2,pn);\n\t    test1_exit(8);\n\t    }\n\tif(memcmp(out,plaintext,pn))\n\t    {\n\t    fprintf(stderr,"Plaintext mismatch\\n");\n\t    hexdump(stderr,"Got",out,pn);\n\t    hexdump(stderr,"Expected",plaintext,pn);\n\t    test1_exit(9);\n\t    }\n\t}\n    EVP_CIPHER_CTX_cleanup(&ctx);\n    printf("\\n");\n    }']