Changeset
6e44bfa16096 did not fix the segv. (Sorry, I made the fix
based off a report on IRC but didn't trigger the segv myself: it was
caused by an out-of-tree patch).
The actual problem was that the rset was only resized on a successful
gpgme_get_key(). However, on error, the array still needs to be
NULL-terminated before calling free_recipient_set().
Move the resize so it always takes place. This obviates the need for
the NULL check added in
6e44bfa16096.
else
err = gpgme_get_key (context, buf, &key, 0);
+ safe_realloc (&rset, sizeof (*rset) * (rset_n + 1));
if (! err)
- {
- safe_realloc (&rset, sizeof (*rset) * (rset_n + 1));
- rset[rset_n++] = key;
- }
+ rset[rset_n++] = key;
else
{
mutt_error (_("error adding recipient `%s': %s\n"),
buf, gpgme_strerror (err));
- if (rset)
- {
- rset[rset_n] = NULL;
- free_recipient_set (&rset);
- }
+ rset[rset_n] = NULL;
+ free_recipient_set (&rset);
gpgme_release (context);
return NULL;
}