about summary refs log tree commit diff
path: root/third_party/git/contrib/credential/osxkeychain
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/contrib/credential/osxkeychain
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/contrib/credential/osxkeychain')
-rw-r--r--third_party/git/contrib/credential/osxkeychain/.gitignore1
-rw-r--r--third_party/git/contrib/credential/osxkeychain/Makefile17
-rw-r--r--third_party/git/contrib/credential/osxkeychain/git-credential-osxkeychain.c183
3 files changed, 0 insertions, 201 deletions
diff --git a/third_party/git/contrib/credential/osxkeychain/.gitignore b/third_party/git/contrib/credential/osxkeychain/.gitignore
deleted file mode 100644
index 6c5b7026c53d..000000000000
--- a/third_party/git/contrib/credential/osxkeychain/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-git-credential-osxkeychain
diff --git a/third_party/git/contrib/credential/osxkeychain/Makefile b/third_party/git/contrib/credential/osxkeychain/Makefile
deleted file mode 100644
index 4b3a08a2bac4..000000000000
--- a/third_party/git/contrib/credential/osxkeychain/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-all:: git-credential-osxkeychain
-
-CC = gcc
-RM = rm -f
-CFLAGS = -g -O2 -Wall
-
--include ../../../config.mak.autogen
--include ../../../config.mak
-
-git-credential-osxkeychain: git-credential-osxkeychain.o
-	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) -Wl,-framework -Wl,Security
-
-git-credential-osxkeychain.o: git-credential-osxkeychain.c
-	$(CC) -c $(CFLAGS) $<
-
-clean:
-	$(RM) git-credential-osxkeychain git-credential-osxkeychain.o
diff --git a/third_party/git/contrib/credential/osxkeychain/git-credential-osxkeychain.c b/third_party/git/contrib/credential/osxkeychain/git-credential-osxkeychain.c
deleted file mode 100644
index bcd3f575a3e3..000000000000
--- a/third_party/git/contrib/credential/osxkeychain/git-credential-osxkeychain.c
+++ /dev/null
@@ -1,183 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <Security/Security.h>
-
-static SecProtocolType protocol;
-static char *host;
-static char *path;
-static char *username;
-static char *password;
-static UInt16 port;
-
-static void die(const char *err, ...)
-{
-	char msg[4096];
-	va_list params;
-	va_start(params, err);
-	vsnprintf(msg, sizeof(msg), err, params);
-	fprintf(stderr, "%s\n", msg);
-	va_end(params);
-	exit(1);
-}
-
-static void *xstrdup(const char *s1)
-{
-	void *ret = strdup(s1);
-	if (!ret)
-		die("Out of memory");
-	return ret;
-}
-
-#define KEYCHAIN_ITEM(x) (x ? strlen(x) : 0), x
-#define KEYCHAIN_ARGS \
-	NULL, /* default keychain */ \
-	KEYCHAIN_ITEM(host), \
-	0, NULL, /* account domain */ \
-	KEYCHAIN_ITEM(username), \
-	KEYCHAIN_ITEM(path), \
-	port, \
-	protocol, \
-	kSecAuthenticationTypeDefault
-
-static void write_item(const char *what, const char *buf, int len)
-{
-	printf("%s=", what);
-	fwrite(buf, 1, len, stdout);
-	putchar('\n');
-}
-
-static void find_username_in_item(SecKeychainItemRef item)
-{
-	SecKeychainAttributeList list;
-	SecKeychainAttribute attr;
-
-	list.count = 1;
-	list.attr = &attr;
-	attr.tag = kSecAccountItemAttr;
-
-	if (SecKeychainItemCopyContent(item, NULL, &list, NULL, NULL))
-		return;
-
-	write_item("username", attr.data, attr.length);
-	SecKeychainItemFreeContent(&list, NULL);
-}
-
-static void find_internet_password(void)
-{
-	void *buf;
-	UInt32 len;
-	SecKeychainItemRef item;
-
-	if (SecKeychainFindInternetPassword(KEYCHAIN_ARGS, &len, &buf, &item))
-		return;
-
-	write_item("password", buf, len);
-	if (!username)
-		find_username_in_item(item);
-
-	SecKeychainItemFreeContent(NULL, buf);
-}
-
-static void delete_internet_password(void)
-{
-	SecKeychainItemRef item;
-
-	/*
-	 * Require at least a protocol and host for removal, which is what git
-	 * will give us; if you want to do something more fancy, use the
-	 * Keychain manager.
-	 */
-	if (!protocol || !host)
-		return;
-
-	if (SecKeychainFindInternetPassword(KEYCHAIN_ARGS, 0, NULL, &item))
-		return;
-
-	SecKeychainItemDelete(item);
-}
-
-static void add_internet_password(void)
-{
-	/* Only store complete credentials */
-	if (!protocol || !host || !username || !password)
-		return;
-
-	if (SecKeychainAddInternetPassword(
-	      KEYCHAIN_ARGS,
-	      KEYCHAIN_ITEM(password),
-	      NULL))
-		return;
-}
-
-static void read_credential(void)
-{
-	char buf[1024];
-
-	while (fgets(buf, sizeof(buf), stdin)) {
-		char *v;
-
-		if (!strcmp(buf, "\n"))
-			break;
-		buf[strlen(buf)-1] = '\0';
-
-		v = strchr(buf, '=');
-		if (!v)
-			die("bad input: %s", buf);
-		*v++ = '\0';
-
-		if (!strcmp(buf, "protocol")) {
-			if (!strcmp(v, "imap"))
-				protocol = kSecProtocolTypeIMAP;
-			else if (!strcmp(v, "imaps"))
-				protocol = kSecProtocolTypeIMAPS;
-			else if (!strcmp(v, "ftp"))
-				protocol = kSecProtocolTypeFTP;
-			else if (!strcmp(v, "ftps"))
-				protocol = kSecProtocolTypeFTPS;
-			else if (!strcmp(v, "https"))
-				protocol = kSecProtocolTypeHTTPS;
-			else if (!strcmp(v, "http"))
-				protocol = kSecProtocolTypeHTTP;
-			else if (!strcmp(v, "smtp"))
-				protocol = kSecProtocolTypeSMTP;
-			else /* we don't yet handle other protocols */
-				exit(0);
-		}
-		else if (!strcmp(buf, "host")) {
-			char *colon = strchr(v, ':');
-			if (colon) {
-				*colon++ = '\0';
-				port = atoi(colon);
-			}
-			host = xstrdup(v);
-		}
-		else if (!strcmp(buf, "path"))
-			path = xstrdup(v);
-		else if (!strcmp(buf, "username"))
-			username = xstrdup(v);
-		else if (!strcmp(buf, "password"))
-			password = xstrdup(v);
-	}
-}
-
-int main(int argc, const char **argv)
-{
-	const char *usage =
-		"usage: git credential-osxkeychain <get|store|erase>";
-
-	if (!argv[1])
-		die(usage);
-
-	read_credential();
-
-	if (!strcmp(argv[1], "get"))
-		find_internet_password();
-	else if (!strcmp(argv[1], "store"))
-		add_internet_password();
-	else if (!strcmp(argv[1], "erase"))
-		delete_internet_password();
-	/* otherwise, ignore unknown action */
-
-	return 0;
-}