mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
agent: Fix alignment problem with the second passphrase struct.
* agent/genkey.c (agent_ask_new_passphrase): Use a separate malloc for PI2. Check return value of the malloc function. * agent/command-ssh.c (ssh_identity_register): Use a separate malloc for PI2. Wipe PI2. -- For whatever stupid reasons I once allocated only one memory area and split that into PI and PI2. This is actually a common pattern with malloc but here we used a made up object size and do not take the extra alignment required into account. One of these not yet hit by a (sig)bus PC/VAX hacker bugs. Instead of trying to fix the alignment, it is better to use a second calloc for the second struct. GnuPG-bug-id: 2112 Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
2acceba5cc
commit
ddf9dd135a
2 changed files with 23 additions and 5 deletions
|
@ -374,8 +374,16 @@ agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt,
|
|||
return err;
|
||||
}
|
||||
|
||||
pi = gcry_calloc_secure (2, sizeof (*pi) + MAX_PASSPHRASE_LEN + 1);
|
||||
pi2 = pi + (sizeof *pi + MAX_PASSPHRASE_LEN + 1);
|
||||
pi = gcry_calloc_secure (1, sizeof (*pi) + MAX_PASSPHRASE_LEN + 1);
|
||||
if (!pi)
|
||||
return gpg_error_from_syserror ();
|
||||
pi2 = gcry_calloc_secure (1, sizeof (*pi2) + MAX_PASSPHRASE_LEN + 1);
|
||||
if (!pi2)
|
||||
{
|
||||
err = gpg_error_from_syserror ();
|
||||
xfree (pi2);
|
||||
return err;
|
||||
}
|
||||
pi->max_length = MAX_PASSPHRASE_LEN + 1;
|
||||
pi->max_tries = 3;
|
||||
pi->with_qualitybar = 1;
|
||||
|
@ -422,6 +430,7 @@ agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt,
|
|||
}
|
||||
|
||||
xfree (initial_errtext);
|
||||
xfree (pi2);
|
||||
xfree (pi);
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue