diff --git a/libraries/libldap/tls_m.c b/libraries/libldap/tls_m.c index 7d5ffea..4b2ecfa 100644 --- a/libraries/libldap/tls_m.c +++ b/libraries/libldap/tls_m.c @@ -1579,6 +1579,7 @@ tlsm_get_certdb_prefix( const char *certdir, char **realcertdir, char **prefix ) { char sep = PR_GetDirectorySeparator(); char *ptr = NULL; + char *chkpath = NULL; struct PRFileInfo prfi; PRStatus prc; @@ -1589,8 +1590,16 @@ tlsm_get_certdb_prefix( const char *certdir, char **realcertdir, char **prefix ) return; } - prc = PR_GetFileInfo( certdir, &prfi ); + /* ignore database type prefix (e.g. sql:, dbm:) if provided */ + chkpath = strchr( certdir, ':' ); + if ( chkpath != NULL ) { + chkpath += 1; + } else { + chkpath = certdir; + } + /* if certdir exists (file or directory) then it cannot specify a prefix */ + prc = PR_GetFileInfo( chkpath, &prfi ); if ( prc == PR_SUCCESS ) { return; }