From: Brandon Casey Date: Mon, 23 Sep 2013 18:49:11 +0000 (-0700) Subject: contrib/git-credential-gnome-keyring.c: use secure memory functions for passwds X-Git-Tag: v1.8.5-rc0~28^2~6 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=9fe3e6cf9e5e3dbf8777dd78dbd27c44cfc4eb85;p=git-core%2Fgit.git contrib/git-credential-gnome-keyring.c: use secure memory functions for passwds gnome-keyring provides functions for allocating non-pageable memory (if possible) intended to be used for storing passwords. Let's use them. Signed-off-by: Brandon Casey Signed-off-by: Junio C Hamano --- diff --git a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c index b692e1f89..d8a7038a6 100644 --- a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c +++ b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c @@ -30,6 +30,7 @@ #include #include #include +#include /* * This credential struct and API is simplified from git's credential.{h,c} @@ -60,16 +61,6 @@ struct credential_operation /* ---------------- common helper functions ----------------- */ -static inline void free_password(char *password) -{ - char *c = password; - if (!password) - return; - - while (*c) *c++ = '\0'; - free(password); -} - static inline void warning(const char *fmt, ...) { va_list ap; @@ -159,8 +150,8 @@ static int keyring_get(struct credential *c) /* pick the first one from the list */ password_data = (GnomeKeyringNetworkPasswordData *) entries->data; - free_password(c->password); - c->password = xstrdup(password_data->password); + gnome_keyring_memory_free(c->password); + c->password = gnome_keyring_memory_strdup(password_data->password); if (!c->username) c->username = xstrdup(password_data->user); @@ -291,7 +282,7 @@ static void credential_clear(struct credential *c) free(c->host); free(c->path); free(c->username); - free_password(c->password); + gnome_keyring_memory_free(c->password); credential_init(c); } @@ -338,8 +329,8 @@ static int credential_read(struct credential *c) free(c->username); c->username = xstrdup(value); } else if (!strcmp(key, "password")) { - free_password(c->password); - c->password = xstrdup(value); + gnome_keyring_memory_free(c->password); + c->password = gnome_keyring_memory_strdup(value); while (*value) *value++ = '\0'; } /*