From: Brandon Casey <draf...@gmail.com>

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 <draf...@gmail.com>
---
 .../gnome-keyring/git-credential-gnome-keyring.c    | 21 ++++++---------------
 1 file changed, 6 insertions(+), 15 deletions(-)

diff --git a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c 
b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
index b692e1f..d8a7038 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 <errno.h>
 #include <glib.h>
 #include <gnome-keyring.h>
+#include <gnome-keyring-memory.h>
 
 /*
  * 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';
                }
                /*
-- 
1.8.4.rc4.6.g5555d19


-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may 
contain
confidential information.  Any unauthorized review, use, disclosure or 
distribution
is prohibited.  If you are not the intended recipient, please contact the 
sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to