crypto/evp/p_verify.c:101: error: UNINITIALIZED_VALUE
  The value read from m_len was never initialized.
Showing all 1 steps of the trace


crypto/evp/p_verify.c:101:7: 
99.   		if (EVP_PKEY_CTX_set_signature_md(pkctx, ctx->digest) <= 0)
100.   			goto err;
101. > 		i = EVP_PKEY_verify(pkctx, sigbuf, siglen, m, m_len);
102.   		err:
103.   		EVP_PKEY_CTX_free(pkctx);

int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
	     unsigned int siglen, EVP_PKEY *pkey)
	{
	unsigned char m[EVP_MAX_MD_SIZE];
	unsigned int m_len;
	int i = 0,ok = 0,v;
	EVP_PKEY_CTX *pkctx = NULL;
	if (ctx->flags & EVP_MD_CTX_FLAG_FINALISE)
		{
		if (!EVP_DigestFinal_ex(ctx, m, &m_len))
			goto err;
		}
	else
		{
		int rv;
		EVP_MD_CTX tmp_ctx;
		EVP_MD_CTX_init(&tmp_ctx);
		rv = EVP_MD_CTX_copy_ex(&tmp_ctx,ctx);
		if (rv)
			rv = EVP_DigestFinal_ex(&tmp_ctx, m, &m_len);
		EVP_MD_CTX_cleanup(&tmp_ctx);
		if (!rv)
			return 0;
		}
	if (ctx->digest->flags & EVP_MD_FLAG_PKEY_METHOD_SIGNATURE)
		{
		i = -1;
		pkctx = EVP_PKEY_CTX_new(pkey, NULL);
		if (!pkctx)
			goto err;
		if (EVP_PKEY_verify_init(pkctx) <= 0)
			goto err;
		if (EVP_PKEY_CTX_set_signature_md(pkctx, ctx->digest) <= 0)
			goto err;
		i = EVP_PKEY_verify(pkctx, sigbuf, siglen, m, m_len);
		err:
		EVP_PKEY_CTX_free(pkctx);
		return i;
		}
	for (i=0; i<4; i++)
		{
		v=ctx->digest->required_pkey_type[i];
		if (v == 0) break;
		if (pkey->type == v)
			{
			ok=1;
			break;
			}
		}
	if (!ok)
		{
		EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE);
		return(-1);
		}
        if (ctx->digest->verify == NULL)
                {
		EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_NO_VERIFY_FUNCTION_CONFIGURED);
		return(0);
		}
	return(ctx->digest->verify(ctx->digest->type,m,m_len,
		sigbuf,siglen,pkey->pkey.ptr));
	}
['int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,\n\t     unsigned int siglen, EVP_PKEY *pkey)\n\t{\n\tunsigned char m[EVP_MAX_MD_SIZE];\n\tunsigned int m_len;\n\tint i = 0,ok = 0,v;\n\tEVP_PKEY_CTX *pkctx = NULL;\n\tif (ctx->flags & EVP_MD_CTX_FLAG_FINALISE)\n\t\t{\n\t\tif (!EVP_DigestFinal_ex(ctx, m, &m_len))\n\t\t\tgoto err;\n\t\t}\n\telse\n\t\t{\n\t\tint rv;\n\t\tEVP_MD_CTX tmp_ctx;\n\t\tEVP_MD_CTX_init(&tmp_ctx);\n\t\trv = EVP_MD_CTX_copy_ex(&tmp_ctx,ctx);\n\t\tif (rv)\n\t\t\trv = EVP_DigestFinal_ex(&tmp_ctx, m, &m_len);\n\t\tEVP_MD_CTX_cleanup(&tmp_ctx);\n\t\tif (!rv)\n\t\t\treturn 0;\n\t\t}\n\tif (ctx->digest->flags & EVP_MD_FLAG_PKEY_METHOD_SIGNATURE)\n\t\t{\n\t\ti = -1;\n\t\tpkctx = EVP_PKEY_CTX_new(pkey, NULL);\n\t\tif (!pkctx)\n\t\t\tgoto err;\n\t\tif (EVP_PKEY_verify_init(pkctx) <= 0)\n\t\t\tgoto err;\n\t\tif (EVP_PKEY_CTX_set_signature_md(pkctx, ctx->digest) <= 0)\n\t\t\tgoto err;\n\t\ti = EVP_PKEY_verify(pkctx, sigbuf, siglen, m, m_len);\n\t\terr:\n\t\tEVP_PKEY_CTX_free(pkctx);\n\t\treturn i;\n\t\t}\n\tfor (i=0; i<4; i++)\n\t\t{\n\t\tv=ctx->digest->required_pkey_type[i];\n\t\tif (v == 0) break;\n\t\tif (pkey->type == v)\n\t\t\t{\n\t\t\tok=1;\n\t\t\tbreak;\n\t\t\t}\n\t\t}\n\tif (!ok)\n\t\t{\n\t\tEVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE);\n\t\treturn(-1);\n\t\t}\n        if (ctx->digest->verify == NULL)\n                {\n\t\tEVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_NO_VERIFY_FUNCTION_CONFIGURED);\n\t\treturn(0);\n\t\t}\n\treturn(ctx->digest->verify(ctx->digest->type,m,m_len,\n\t\tsigbuf,siglen,pkey->pkey.ptr));\n\t}']