crypto/evp/exchange.c:194: error: NULL_DEREFERENCE
  pointer `null` is dereferenced by call to `EVP_KEYEXCH_fetch()` at line 194, column 24.
Showing all 18 steps of the trace


crypto/evp/exchange.c:167:1: start of procedure EVP_PKEY_derive_init_ex()
165.   }
166.   
167. > int EVP_PKEY_derive_init_ex(EVP_PKEY_CTX *ctx, EVP_KEYEXCH *exchange)
168.   {
169.       int ret;

crypto/evp/exchange.c:170:5: 
168.   {
169.       int ret;
170. >     void *provkey = NULL;
171.   
172.       ctx->operation = EVP_PKEY_OP_DERIVE;

crypto/evp/exchange.c:172:5: 
170.       void *provkey = NULL;
171.   
172. >     ctx->operation = EVP_PKEY_OP_DERIVE;
173.   
174.       if (ctx->engine != NULL)

crypto/evp/exchange.c:174:9: Taking false branch
172.       ctx->operation = EVP_PKEY_OP_DERIVE;
173.   
174.       if (ctx->engine != NULL)
               ^
175.           goto legacy;
176.   

crypto/evp/exchange.c:177:9: Taking false branch
175.           goto legacy;
176.   
177.       if (exchange != NULL) {
               ^
178.           if (!EVP_KEYEXCH_up_ref(exchange))
179.               goto err;

crypto/evp/exchange.c:181:19: Condition is true
179.               goto err;
180.       } else {
181.           int nid = ctx->pkey != NULL ? ctx->pkey->type : ctx->pmeth->pkey_id;
                         ^
182.   
183.           /*

crypto/evp/exchange.c:181:9: 
179.               goto err;
180.       } else {
181. >         int nid = ctx->pkey != NULL ? ctx->pkey->type : ctx->pmeth->pkey_id;
182.   
183.           /*

crypto/evp/exchange.c:187:13: Taking true branch
185.            * algorithms are moved to providers.
186.            */
187.           if (ctx->pkey != NULL) {
                   ^
188.               switch (ctx->pkey->type) {
189.               case EVP_PKEY_DH:

crypto/evp/exchange.c:188:13: 
186.            */
187.           if (ctx->pkey != NULL) {
188. >             switch (ctx->pkey->type) {
189.               case EVP_PKEY_DH:
190.                   break;

crypto/evp/exchange.c:189:13: Switch condition is true. Entering switch case
187.           if (ctx->pkey != NULL) {
188.               switch (ctx->pkey->type) {
189.               case EVP_PKEY_DH:
                   ^
190.                   break;
191.               default:

crypto/evp/exchange.c:194:13: 
192.                   goto legacy;
193.               }
194. >             exchange = EVP_KEYEXCH_fetch(NULL, OBJ_nid2sn(nid), NULL);
195.           } else {
196.               goto legacy;

crypto/objects/obj_dat.c:250:1: start of procedure OBJ_nid2sn()
  248.   }
  249.   
  250. > const char *OBJ_nid2sn(int n)
  251.   {
  252.       ADDED_OBJ ad, *adp;

crypto/objects/obj_dat.c:255:10: Taking true branch
  253.       ASN1_OBJECT ob;
  254.   
  255.       if ((n >= 0) && (n < NUM_NID)) {
                  ^
  256.           if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
  257.               OBJerr(OBJ_F_OBJ_NID2SN, OBJ_R_UNKNOWN_NID);

crypto/objects/obj_dat.c:255:22: Taking true branch
  253.       ASN1_OBJECT ob;
  254.   
  255.       if ((n >= 0) && (n < NUM_NID)) {
                              ^
  256.           if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
  257.               OBJerr(OBJ_F_OBJ_NID2SN, OBJ_R_UNKNOWN_NID);

crypto/objects/obj_dat.c:256:14: Taking true branch
  254.   
  255.       if ((n >= 0) && (n < NUM_NID)) {
  256.           if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
                      ^
  257.               OBJerr(OBJ_F_OBJ_NID2SN, OBJ_R_UNKNOWN_NID);
  258.               return NULL;

crypto/objects/obj_dat.c:256:34: Taking false branch
  254.   
  255.       if ((n >= 0) && (n < NUM_NID)) {
  256.           if ((n != NID_undef) && (nid_objs[n].nid == NID_undef)) {
                                          ^
  257.               OBJerr(OBJ_F_OBJ_NID2SN, OBJ_R_UNKNOWN_NID);
  258.               return NULL;

crypto/objects/obj_dat.c:260:9: 
  258.               return NULL;
  259.           }
  260. >         return nid_objs[n].sn;
  261.       }
  262.   

crypto/objects/obj_dat.c:278:1: return from a call to OBJ_nid2sn
  276.       OBJerr(OBJ_F_OBJ_NID2SN, OBJ_R_UNKNOWN_NID);
  277.       return NULL;
  278. > }
  279.   
  280.   const char *OBJ_nid2ln(int n)
