openbsd-ports/editors/ldapvi/patches/patch-arguments_c
sthen 1c30160016 Add various patches to ldapvi from upstream git/mailing list submissions:
- add -y support to read password from a file
- remove useless header that vim whines about
- preserve order of attribute values
- fix possible LP64 issue (improper sentinel)
- allow editors/pagers with arguments
- getline namespace collision, upstream git 256ced029c
- fix hash generation

OK ajacoutot@
2012-03-02 08:01:06 +00:00

82 lines
2.5 KiB
Plaintext

$OpenBSD: patch-arguments_c,v 1.1 2012/03/02 08:01:07 sthen Exp $
add -y / password-file support, from upstream git bda806b0c311
--- arguments.c.orig Sat May 5 11:17:26 2007
+++ arguments.c Thu Mar 1 22:04:17 2012
@@ -40,6 +40,7 @@ static void parse_configuration(char *, cmdline *, GPt
" -D, --user USER Search filter or DN: User to bind as. [1]\n" \
" Sets --bind simple.\n" \
" -w, --password SECRET Password (also valid for SASL).\n" \
+" -y, --password-file FILE Password file (also valid for SASL).\n" \
" --bind [simple,sasl]\n" \
" Disable or enable SASL.\n" \
" --bind-dialog [never,auto,always]\n" \
@@ -131,6 +132,7 @@ static struct poptOption options[] = {
{"sasl-authzid",'X', POPT_ARG_STRING, 0, 'X', 0, 0},
{"sasl-authcid",'U', POPT_ARG_STRING, 0, 'U', 0, 0},
{"password", 'w', POPT_ARG_STRING, 0, 'w', 0, 0},
+ {"password-file",'y',POPT_ARG_STRING, 0, 'y', 0, 0},
{"chase", 'C', POPT_ARG_STRING, 0, 'C', 0, 0},
{"deref", 'a', POPT_ARG_STRING, 0, 'a', 0, 0},
{"sort", 'S', POPT_ARG_STRING, 0, 'S', 0, 0},
@@ -232,6 +234,30 @@ init_cmdline(cmdline *cmdline)
}
static void
+read_password_file(bind_options *bind_options, char *filename)
+{
+ struct stat st;
+ int fd;
+ char *data;
+ char *ptr;
+
+ if (stat(filename, &st) == -1) {
+ fprintf(stderr, "Failed to stat password file: %s\n",
+ filename);
+ exit(1);
+ }
+ data = xalloc(st.st_size + 1);
+ if ( (fd = open(filename, O_RDONLY)) == -1) syserr();
+ if (read(fd, data, st.st_size) != st.st_size) syserr();
+ close(fd);
+ data[st.st_size] = 0;
+ if ( (ptr = strchr(data, '\n')))
+ *ptr = 0;
+
+ bind_options->password = data;
+}
+
+static void
parse_argument(int c, char *arg, cmdline *result, GPtrArray *ctrls)
{
LDAPControl *control;
@@ -264,6 +290,9 @@ parse_argument(int c, char *arg, cmdline *result, GPtr
case 'w':
result->bind_options.password = arg;
break;
+ case 'y':
+ read_password_file(&result->bind_options, arg);
+ break;
case 'd':
result->discover = 1;
break;
@@ -577,7 +606,7 @@ parse_configuration(char *profile_name, cmdline *resul
}
if (!p)
break;
- if (strcmp(entry_dn(p), profile_name))
+ if (strcmp(entry_dn(p), profile_name))
entry_free(p);
else if (profile_found)
duplicate = 1;
@@ -683,7 +712,7 @@ parse_arguments(int argc, const char **argv, cmdline *
break;
default:
abort();
- }
+ }
if (result->profileonlyp)
if (setenv("LDAPNOINIT", "thanks", 1)) syserr();