(gdb) file opendkim/opendkim Reading symbols from /opendkim-2.7.0/opendkim/opendkim...done. (gdb) b opendkim-db.c:5924 Breakpoint 1 at 0x41fcff: file opendkim-db.c, line 5924. (gdb) r -p inet:9995 -x /etc/opendkim.conf Starting program: /opendkim-2.7.0/opendkim/opendkim -p inet:9995 -x /etc/opendkim.conf warning: no loadable sections found in added symbol-file system-supplied DSO at 0x7ffff7ffa000 [Thread debugging using libthread_db enabled] [New Thread 0x7ffff5bdf700 (LWP 28981)] [Thread 0x7ffff5bdf700 (LWP 28981) exited] Breakpoint 1, dkimf_db_walk (db=0x6663c0, first=true, key=0x0, keylen=0x0, req=0x7ffffffea1f0, reqnum=2) at opendkim-db.c:5938 5938 snprintf(query, sizeof query, "SELECT %s,%s FROM %s", (gdb) p query $1 = "SELECT domain_name,id FROM ActiveSigningKeys\000"... *Executing on my database results in these values: domain_name | id secondaryname.com | 1 adamjacques.com | 2 alternatename.com | 4 Note that there are not any null values in the database. Continuing... (gdb) n 5943 if (err < 0) (gdb) n 5949 err = odbx_result((odbx_t *) db->db_handle, (gdb) n 5951 if (err < 0) (gdb) n 5958 db->db_cursor = result; (gdb) n 5961 err = odbx_row_fetch(result); (gdb) n 5962 if (err < 0) (gdb) p result[0] $3 = {handle = 0x6664f0, generic = 0x68ccc0, aux = 0x686000} (gdb) n 5970 if (err == ODBX_RES_DONE) (gdb) n 5973 fields = odbx_column_count(result); (gdb) n 5974 if (fields == 0) (gdb) p fields $4 = 2 (gdb) n 5982 if (key != NULL && keylen != NULL) (gdb) n 5989 if (reqnum != 0) (gdb) n 5993 for (c = 0; c < reqnum; c++) (gdb) n 5995 if (c >= fields) (gdb) p c $5 = 0 (gdb) p reqnum $6 = 2 (gdb) n 6004 c + 1); (gdb) n 6003 val = (char *) odbx_field_value(result, (gdb) n 6006 req[c].dbdata_buflen = strlcpy(req[c].dbdata_buffer, (gdb) p val $7 = 0x690cf2 "1" (gdb) p odbx_field_value(result, c) $8 = 0x690ce0 "secondaryname.com" (gdb) n 6008 req[c].dbdata_buflen); (gdb) n 6006 req[c].dbdata_buflen = strlcpy(req[c].dbdata_buffer, (gdb) p req[c] $9 = {dbdata_flags = 0, dbdata_buffer = 0x7ffffffeb770 "", dbdata_buflen = 1024} (gdb) n 5993 for (c = 0; c < reqnum; c++) (gdb) n 5995 if (c >= fields) (gdb) p c $10 = 1 (gdb) n 6004 c + 1); (gdb) n 6003 val = (char *) odbx_field_value(result, (gdb) n 6006 req[c].dbdata_buflen = strlcpy(req[c].dbdata_buffer, (gdb) p val $11 = 0x0 (gdb) p req[c] $17 = {dbdata_flags = 0, dbdata_buffer = 0x7ffffffec7b0 "nDKIM/table=ActiveSigningKeys?keycol=id?datacol=domain_name,selector,private_key", dbdata_buflen = 1024} (gdb) n Program received signal SIGSEGV, Segmentation fault. 0x0000000000443702 in strlcpy ( dst=0x7ffffffec7b0 "nDKIM/table=ActiveSigningKeys?keycol=id?datacol=domain_name,selector,private_key", src=0x0, size=1023) at strl.c:65 65 for (i = 0; i < size && (dst[i] = src[i]) != 0; i++) * And now val is null