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


apps/srp.c:124:1: start of procedure print_user()
122.   }
123.   
124. > static void print_user(CA_DB *db, int userindex, int verbose)
125.   {
126.       if (verbose > 0) {

apps/srp.c:126:9: Taking true branch
124.   static void print_user(CA_DB *db, int userindex, int verbose)
125.   {
126.       if (verbose > 0) {
               ^
127.           char **pp = sk_OPENSSL_PSTRING_value(db->db->data, userindex);
128.   

apps/srp.c:127:9: 
125.   {
126.       if (verbose > 0) {
127. >         char **pp = sk_OPENSSL_PSTRING_value(db->db->data, userindex);
128.   
129.           if (pp[DB_srptype][0] != 'I') {

include/openssl/txt_db.h:79:1: start of procedure sk_OPENSSL_PSTRING_value()
  77.   
  78.   typedef OPENSSL_STRING *OPENSSL_PSTRING;
  79. > DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
  80.   
  81.   typedef struct txt_db_st {

crypto/stack/stack.c:323:1: start of procedure sk_value()
    321.   }
    322.   
    323. > void *sk_value(const _STACK *st, int i)
    324.   {
    325.       if (!st || (i < 0) || (i >= st->num))

crypto/stack/stack.c:325:10: Taking false branch
    323.   void *sk_value(const _STACK *st, int i)
    324.   {
    325.       if (!st || (i < 0) || (i >= st->num))
                    ^
    326.           return NULL;
    327.       return st->data[i];

crypto/stack/stack.c:325:17: Taking true branch
    323.   void *sk_value(const _STACK *st, int i)
    324.   {
    325.       if (!st || (i < 0) || (i >= st->num))
                           ^
    326.           return NULL;
    327.       return st->data[i];

crypto/stack/stack.c:326:9: 
    324.   {
    325.       if (!st || (i < 0) || (i >= st->num))
    326. >         return NULL;
    327.       return st->data[i];
    328.   }

crypto/stack/stack.c:328:1: return from a call to sk_value
    326.           return NULL;
    327.       return st->data[i];
    328. > }
    329.   
    330.   void *sk_set(_STACK *st, int i, void *value)

include/openssl/txt_db.h:79:1: return from a call to sk_OPENSSL_PSTRING_value
  77.   
  78.   typedef OPENSSL_STRING *OPENSSL_PSTRING;
  79. > DEFINE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
  80.   
  81.   typedef struct txt_db_st {

apps/srp.c:129:13: 
127.           char **pp = sk_OPENSSL_PSTRING_value(db->db->data, userindex);
128.   
129. >         if (pp[DB_srptype][0] != 'I') {
130.               print_entry(db, userindex, verbose, "User entry");
131.               print_entry(db, get_index(db, pp[DB_srpgN], 'I'), verbose,
