--- a/opendkim/opendkim-db.c +++ b/opendkim/opendkim-db.c @@ -5689,6 +5689,7 @@ dkimf_db_strerror(DKIMF_DB db, char *err, size_t errlen) case DKIMF_DB_TYPE_DSN: { char *p; + size_t len; strlcpy(err, odbx_error((odbx_t *) db->db_handle, db->db_status), errlen); @@ -5699,8 +5700,9 @@ dkimf_db_strerror(DKIMF_DB db, char *err, size_t errlen) else break; } - } + return strlen(err) + 1; + } #endif /* USE_ODBX */ #ifdef USE_LDAP --- a/opendkim/opendkim.c +++ b/opendkim/opendkim.c @@ -4745,7 +4745,30 @@ dkimf_add_signrequest(struct msgctx *dfc, DKIMF_DB keytable, char *keyname, if (dkimf_db_get(keytable, keyname, strlen(keyname), dbd, 3, &found) != 0) + { + char err[BUFRSZ]; + + memset(err, '\0', sizeof err); + (void) dkimf_db_strerror(keytable, err, sizeof err); + + if (dolog) + { + if (err[0] != '\0') + { + syslog(LOG_ERR, + "key '%s': dkimf_db_get(): %s", + keyname, err); + } + else + { + syslog(LOG_ERR, + "key '%s': dkimf_db_get() failed", + keyname); + } + } + return -1; + } if (!found) return 1;