Commit a4456929 by Russell Belfer

Make credential clearing consistent

This makes all of the credential objects use the same pattern to
clear the contents and call git__memzero when done.  Much of this
information is probably not sensitive, but it also seems better
to just clear consistently.
parent 03d9b930
...@@ -12,16 +12,17 @@ ...@@ -12,16 +12,17 @@
static void plaintext_free(struct git_cred *cred) static void plaintext_free(struct git_cred *cred)
{ {
git_cred_userpass_plaintext *c = (git_cred_userpass_plaintext *)cred; git_cred_userpass_plaintext *c = (git_cred_userpass_plaintext *)cred;
size_t pass_len = strlen(c->password);
git__free(c->username); git__free(c->username);
/* Zero the memory which previously held the password */ /* Zero the memory which previously held the password */
git__memzero(c->password, pass_len); if (c->password) {
git__free(c->password); size_t pass_len = strlen(c->password);
git__memzero(c->password, pass_len);
memset(c, 0, sizeof(*c)); git__free(c->password);
}
git__memzero(c, sizeof(*c));
git__free(c); git__free(c);
} }
...@@ -74,8 +75,7 @@ static void ssh_keyfile_passphrase_free(struct git_cred *cred) ...@@ -74,8 +75,7 @@ static void ssh_keyfile_passphrase_free(struct git_cred *cred)
git__free(c->passphrase); git__free(c->passphrase);
} }
memset(c, 0, sizeof(*c)); git__memzero(c, sizeof(*c));
git__free(c); git__free(c);
} }
...@@ -85,11 +85,7 @@ static void ssh_publickey_free(struct git_cred *cred) ...@@ -85,11 +85,7 @@ static void ssh_publickey_free(struct git_cred *cred)
git__free(c->publickey); git__free(c->publickey);
c->sign_callback = NULL; git__memzero(c, sizeof(*c));
c->sign_data = NULL;
memset(c, 0, sizeof(*c));
git__free(c); git__free(c);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment