Failure to initialize crypto is fatal
- Almost nothing works if crypto fails to initialize for whatever reason, check and propagate rpmInitCrypto() failure from rpmReadConfigFiles(). - Logging the error left for individual crypto backends to let them identify themselves: beecrypt requires no initialization whatsoever so it cannot fail at all, but NSS can fail in a number of entertaining ways due to missing dlopen()'ed bits and pieces, this should help avoiding wild-goose chases in such cases (RhBug:909627, RhBug:909618...)
This commit is contained in:
parent
65d2e787d5
commit
cca91666d0
|
@ -1607,7 +1607,8 @@ int rpmReadConfigFiles(const char * file, const char * target)
|
||||||
{
|
{
|
||||||
/* Force preloading of dlopen()'ed libraries in case we go chrooting */
|
/* Force preloading of dlopen()'ed libraries in case we go chrooting */
|
||||||
(void) gethostbyname("localhost");
|
(void) gethostbyname("localhost");
|
||||||
(void) rpmInitCrypto();
|
if (rpmInitCrypto())
|
||||||
|
return -1;
|
||||||
|
|
||||||
/* Preset target macros */
|
/* Preset target macros */
|
||||||
/* FIX: target can be NULL */
|
/* FIX: target can be NULL */
|
||||||
|
|
|
@ -62,6 +62,7 @@ int rpmInitCrypto(void)
|
||||||
#else
|
#else
|
||||||
if (NSS_NoDB_Init(NULL) != SECSuccess) {
|
if (NSS_NoDB_Init(NULL) != SECSuccess) {
|
||||||
#endif
|
#endif
|
||||||
|
rpmlog(RPMLOG_ERR, _("Failed to initialize NSS library\n"));
|
||||||
rc = -1;
|
rc = -1;
|
||||||
} else {
|
} else {
|
||||||
_crypto_initialized = 1;
|
_crypto_initialized = 1;
|
||||||
|
|
Loading…
Reference in New Issue