Skip to content

Commit

Permalink
contrib/git-credential-gnome-keyring.c: use secure memory for reading…
Browse files Browse the repository at this point in the history
… passwords

gnome-keyring provides functions to allocate non-pageable memory (if
possible).  Let's use them to allocate memory that may be used to hold
secure data read from the keyring.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Brandon Casey authored and Junio C Hamano committed Oct 16, 2013
1 parent 9fe3e6c commit da2727f
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,12 +289,14 @@ static void credential_clear(struct credential *c)

static int credential_read(struct credential *c)
{
char buf[1024];
char *buf;
size_t line_len;
char *key = buf;
char *key;
char *value;

while (fgets(buf, sizeof(buf), stdin))
key = buf = gnome_keyring_memory_alloc(1024);

while (fgets(buf, 1024, stdin))
{
line_len = strlen(buf);

Expand All @@ -307,6 +309,7 @@ static int credential_read(struct credential *c)
value = strchr(buf,'=');
if (!value) {
warning("invalid credential line: %s", key);
gnome_keyring_memory_free(buf);
return -1;
}
*value++ = '\0';
Expand Down Expand Up @@ -339,6 +342,9 @@ static int credential_read(struct credential *c)
* learn new lines, and the helpers are updated to match.
*/
}

gnome_keyring_memory_free(buf);

return 0;
}

Expand Down

0 comments on commit da2727f

Please sign in to comment.