Some error paths in 'ssl_sock_passwd_cb' (allocation failures) did not
set the 'passphrase_idx' to -1 which is the way for the caller to know
not to call the callback again so in some memory contention contexts we
could end up calling the callback 'infinitely' (or until memory is
finally available).
This patch must be backported to 3.3.
global_ssl.passphrase_cmd[1] = strdup(data->path);
if (!global_ssl.passphrase_cmd[1]) {
+ data->passphrase_idx = -1;
ha_alert("ssl_sock_passwd_cb: allocation failure\n");
return -1;
}
if (!passphrase_cache)
- if (ssl_sock_create_passphrase_cache())
+ if (ssl_sock_create_passphrase_cache()) {
+ data->passphrase_idx = -1;
return -1;
+ }
/* Try all the already known passphrases first. */
if (data->passphrase_idx < passphrase_idx) {