apps/srp.c:82: error: NULL_DEREFERENCE
  pointer `pp` last assigned on line 80 could be null and is dereferenced at line 82, column 13.
Showing all 11 steps of the trace


apps/srp.c:77:1: start of procedure print_user()
75.   }
76.   
77. > static void print_user(CA_DB *db, int userindex, int verbose)
78.   {
79.       if (verbose > 0) {

apps/srp.c:79:9: Taking true branch
77.   static void print_user(CA_DB *db, int userindex, int verbose)
78.   {
79.       if (verbose > 0) {
              ^
80.           char **pp = sk_OPENSSL_PSTRING_value(db->db->data, userindex);
81.   

apps/srp.c:80:9: 
78.   {
79.       if (verbose > 0) {
80. >         char **pp = sk_OPENSSL_PSTRING_value(db->db->data, userindex);
81.   
82.           if (pp[DB_srptype][0] != 'I') {

include/openssl/txt_db.h:31:1: start of procedure sk_OPENSSL_PSTRING_value()
  29.   
  30.   typedef OPENSSL_STRING *OPENSSL_PSTRING;
  31. > DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
  32.   
  33.   typedef struct txt_db_st {

crypto/stack/stack.c:284:1: start of procedure OPENSSL_sk_value()
    282.   }
    283.   
    284. > void *OPENSSL_sk_value(const OPENSSL_STACK *st, int i)
    285.   {
    286.       if (st == NULL || i < 0 || i >= st->num)

crypto/stack/stack.c:286:9: Taking false branch
    284.   void *OPENSSL_sk_value(const OPENSSL_STACK *st, int i)
    285.   {
    286.       if (st == NULL || i < 0 || i >= st->num)
                   ^
    287.           return NULL;
    288.       return (void *)st->data[i];

crypto/stack/stack.c:286:23: Taking true branch
    284.   void *OPENSSL_sk_value(const OPENSSL_STACK *st, int i)
    285.   {
    286.       if (st == NULL || i < 0 || i >= st->num)
                                 ^
    287.           return NULL;
    288.       return (void *)st->data[i];

crypto/stack/stack.c:287:9: 
    285.   {
    286.       if (st == NULL || i < 0 || i >= st->num)
    287. >         return NULL;
    288.       return (void *)st->data[i];
    289.   }

crypto/stack/stack.c:289:1: return from a call to OPENSSL_sk_value
    287.           return NULL;
    288.       return (void *)st->data[i];
    289. > }
    290.   
    291.   void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data)

include/openssl/txt_db.h:31:1: return from a call to sk_OPENSSL_PSTRING_value
  29.   
  30.   typedef OPENSSL_STRING *OPENSSL_PSTRING;
  31. > DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
  32.   
  33.   typedef struct txt_db_st {

apps/srp.c:82:13: 
80.           char **pp = sk_OPENSSL_PSTRING_value(db->db->data, userindex);
81.   
82. >         if (pp[DB_srptype][0] != 'I') {
83.               print_entry(db, userindex, verbose, "User entry");
84.               print_entry(db, get_index(db, pp[DB_srpgN], 'I'), verbose,
