crypto/evp/pmeth_lib.c:534: error: NULL_DEREFERENCE
  pointer `name` last assigned on line 525 could be null and is dereferenced by call to `strlen()` at line 534, column 45.
Showing all 12 steps of the trace


crypto/evp/pmeth_lib.c:503:1: start of procedure EVP_PKEY_CTX_set_signature_md()
501.   }
502.   
503. > int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md)
504.   {
505.       OSSL_PARAM sig_md_params[3], *p = sig_md_params;

crypto/evp/pmeth_lib.c:505:5: 
503.   int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *ctx, const EVP_MD *md)
504.   {
505. >     OSSL_PARAM sig_md_params[3], *p = sig_md_params;
506.       size_t mdsize;
507.       const char *name;

crypto/evp/pmeth_lib.c:509:9: Taking false branch
507.       const char *name;
508.   
509.       if (ctx == NULL) {
               ^
510.           ERR_raise(ERR_LIB_EVP, EVP_R_COMMAND_NOT_SUPPORTED);
511.           /* Uses the same return values as EVP_PKEY_CTX_ctrl */

crypto/evp/pmeth_lib.c:516:9: Taking false branch
514.   
515.       /* TODO(3.0): Remove this eventually when no more legacy */
516.       if (ctx->sigprovctx == NULL)
               ^
517.           return EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG,
518.                                    EVP_PKEY_CTRL_MD, 0, (void *)(md));

crypto/evp/pmeth_lib.c:520:9: Taking false branch
518.                                    EVP_PKEY_CTRL_MD, 0, (void *)(md));
519.   
520.       if (md == NULL) {
               ^
521.           name = "";
522.           mdsize = 0;

crypto/evp/pmeth_lib.c:524:9: Skipping EVP_MD_size(): empty list of specs
522.           mdsize = 0;
523.       } else {
524.           mdsize = EVP_MD_size(md);
               ^
525.           name = EVP_MD_name(md);
526.       }

crypto/evp/pmeth_lib.c:525:9: 
523.       } else {
524.           mdsize = EVP_MD_size(md);
525. >         name = EVP_MD_name(md);
526.       }
527.   

crypto/evp/evp_lib.c:468:1: start of procedure EVP_MD_name()
  466.   }
  467.   
  468. > const char *EVP_MD_name(const EVP_MD *md)
  469.   {
  470.       if (md->prov != NULL)

crypto/evp/evp_lib.c:470:9: Taking false branch
  468.   const char *EVP_MD_name(const EVP_MD *md)
  469.   {
  470.       if (md->prov != NULL)
                 ^
  471.           return md->name;
  472.   #ifndef FIPS_MODE

crypto/evp/evp_lib.c:475:5: 
  473.       return OBJ_nid2sn(EVP_MD_nid(md));
  474.   #else
  475. >     return NULL;
  476.   #endif
  477.   }

crypto/evp/evp_lib.c:477:1: return from a call to EVP_MD_name
  475.       return NULL;
  476.   #endif
  477. > }
  478.   
  479.   const OSSL_PROVIDER *EVP_MD_provider(const EVP_MD *md)

crypto/evp/pmeth_lib.c:528:5: 
526.       }
527.   
528. >     *p++ = OSSL_PARAM_construct_utf8_string(OSSL_SIGNATURE_PARAM_DIGEST,
529.                                               /*
530.                                                * Cast away the const. This is read
