summaryrefslogtreecommitdiffstats
path: root/imap/externalauth.c
diff options
context:
space:
mode:
authorSam Varshavchik2013-08-19 16:39:41 -0400
committerSam Varshavchik2013-08-25 14:43:51 -0400
commit9c45d9ad13fdf439d44d7443ae75da15ea0223ed (patch)
tree7a81a04cb51efb078ee350859a64be2ebc6b8813 /imap/externalauth.c
parenta9520698b770168d1f33d6301463bb70a19655ec (diff)
downloadcourier-libs-9c45d9ad13fdf439d44d7443ae75da15ea0223ed.tar.bz2
Initial checkin
Imported from subversion report, converted to git. Updated all paths in scripts and makefiles, reflecting the new directory hierarchy.
Diffstat (limited to 'imap/externalauth.c')
-rw-r--r--imap/externalauth.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/imap/externalauth.c b/imap/externalauth.c
new file mode 100644
index 0000000..154e876
--- /dev/null
+++ b/imap/externalauth.c
@@ -0,0 +1,39 @@
+/*
+** Copyright 1998 - 2008 Double Precision, Inc.
+** See COPYING for distribution information.
+*/
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#if HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+const char *externalauth()
+{
+ const char *p=getenv("TLS_EXTERNAL");
+ char *q, *r;
+
+ if (!p || !*p)
+ return NULL;
+
+ if ((q=malloc(strlen(p)+20)) == NULL)
+ return NULL;
+
+ strcat(strcpy(q, "TLS_SUBJECT_"), p);
+
+ for (r=q; *r; r++)
+ if (*r >= 'a' && *r <= 'z')
+ *r -= 'a' - 'A';
+
+ p=getenv(q);
+ free(q);
+
+ if (p && *p)
+ return p;
+ return 0;
+}