All of lore.kernel.org
 help / color / mirror / Atom feed
From: Brandon Casey <drafnel@gmail.com>
To: git@vger.kernel.org
Cc: pah@qo.cx, Brandon Casey <drafnel@gmail.com>
Subject: [PATCH 09/15] contrib/git-credential-gnome-keyring.c: use secure memory functions for passwds
Date: Sun, 22 Sep 2013 22:08:05 -0700	[thread overview]
Message-ID: <1379912891-12277-10-git-send-email-drafnel@gmail.com> (raw)
In-Reply-To: <1379912891-12277-1-git-send-email-drafnel@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 <drafnel@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

  parent reply	other threads:[~2013-09-23  5:09 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-23  5:07 [PATCH 00/15] Make Gnome Credential helper more Gnome-y and support ancient distros Brandon Casey
2013-09-23  5:07 ` [PATCH 01/15] contrib/git-credential-gnome-keyring.c: remove unnecessary pre-declarations Brandon Casey
2013-09-23  5:07 ` [PATCH 02/15] contrib/git-credential-gnome-keyring.c: remove unused die() function Brandon Casey
2013-09-23  5:07 ` [PATCH 03/15] contrib/git-credential-gnome-keyring.c: add static where applicable Brandon Casey
2013-09-23  5:08 ` [PATCH 04/15] contrib/git-credential-gnome-keyring.c: exit non-zero when called incorrectly Brandon Casey
2013-09-23  5:08 ` [PATCH 05/15] contrib/git-credential-gnome-keyring.c: set Gnome application name Brandon Casey
2013-09-23  5:08 ` [PATCH 06/15] contrib/git-credential-gnome-keyring.c: strlen() returns size_t, not ssize_t Brandon Casey
2013-09-23  5:08 ` [PATCH 07/15] contrib/git-credential-gnome-keyring.c: ensure buffer is non-empty before accessing Brandon Casey
2013-09-23  5:43   ` Felipe Contreras
2013-09-23 17:21     ` Brandon Casey
2013-09-23  5:08 ` [PATCH 08/15] contrib/git-credential-gnome-keyring.c: use gnome helpers in keyring_object() Brandon Casey
2013-09-23  5:08 ` Brandon Casey [this message]
2013-09-23  5:08 ` [PATCH 10/15] contrib/git-credential-gnome-keyring.c: use secure memory for reading passwords Brandon Casey
2013-09-23  5:08 ` [PATCH 11/15] contrib/git-credential-gnome-keyring.c: use glib memory allocation functions Brandon Casey
2013-09-23  5:08 ` [PATCH 12/15] contrib/git-credential-gnome-keyring.c: use glib messaging functions Brandon Casey
2013-09-23  5:08 ` [PATCH 13/15] contrib/git-credential-gnome-keyring.c: report failure to store password Brandon Casey
2013-09-23  5:08 ` [PATCH 14/15] contrib/git-credential-gnome-keyring.c: support ancient gnome-keyring Brandon Casey
2013-09-23  5:08 ` [PATCH 15/15] contrib/git-credential-gnome-keyring.c: support really " Brandon Casey
2013-09-23 10:20 ` [PATCH 00/15] Make Gnome Credential helper more Gnome-y and support ancient distros John Szakmeister
2013-09-23 17:21   ` Brandon Casey

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1379912891-12277-10-git-send-email-drafnel@gmail.com \
    --to=drafnel@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=pah@qo.cx \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.