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 7565765..ff2f48c 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.489.g545bc72

--
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