Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/crypto/external/bsd/openssh/dist use getpassfd()
details: https://anonhg.NetBSD.org/src/rev/c7fd950a36dd
branches: trunk
changeset: 778801:c7fd950a36dd
user: christos <christos%NetBSD.org@localhost>
date: Fri Apr 13 23:57:08 2012 +0000
description:
use getpassfd()
diffstat:
crypto/external/bsd/openssh/dist/readpassphrase.c | 47 ++++++++++++++++++----
1 files changed, 37 insertions(+), 10 deletions(-)
diffs (79 lines):
diff -r 1b19f42e16d5 -r c7fd950a36dd crypto/external/bsd/openssh/dist/readpassphrase.c
--- a/crypto/external/bsd/openssh/dist/readpassphrase.c Fri Apr 13 23:29:14 2012 +0000
+++ b/crypto/external/bsd/openssh/dist/readpassphrase.c Fri Apr 13 23:57:08 2012 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: readpassphrase.c,v 1.1 2009/06/07 22:38:47 christos Exp $ */
+/* $NetBSD: readpassphrase.c,v 1.2 2012/04/13 23:57:08 christos Exp $ */
/*
* Copyright (c) 2000 Todd C. Miller <Todd.Miller%courtesan.com@localhost>
* All rights reserved.
@@ -43,16 +43,14 @@
#include <readpassphrase.h>
char *
-readpassphrase(prompt, buf, bufsiz, flags)
- const char *prompt;
- char *buf;
- size_t bufsiz;
- int flags;
+readpassphrase(
+ const char *prompt,
+ char *buf,
+ size_t bufsiz,
+ int flags)
{
- struct termios term, oterm;
- char ch, *p, *end;
int input, output;
- sigset_t oset, nset;
+ char *ret;
/* I suppose we could alloc on demand in this case (XXX). */
if (bufsiz == 0) {
@@ -73,6 +71,11 @@
output = STDERR_FILENO;
}
+#ifndef GETPASS_ECHO
+ struct termios term, oterm;
+ char ch, *p, *end;
+ sigset_t oset, nset;
+
/*
* We block SIGINT and SIGTSTP so the terminal is not left
* in an inconsistent state (ie: no echo). It would probably
@@ -119,9 +122,33 @@
if (memcmp(&term, &oterm, sizeof(term)) != 0)
(void)tcsetattr(input, TCSAFLUSH|TCSASOFT, &oterm);
(void)sigprocmask(SIG_SETMASK, &oset, NULL);
+ ret = buf;
+#else
+ int gflags = 0;
+ int fd[3];
+
+ if (flags & RPP_ECHO_ON)
+ gflags |= GETPASS_ECHO;
+ if (flags & RPP_REQUIRE_TTY)
+ gflags |= GETPASS_NEED_TTY;
+ if (flags & RPP_FORCELOWER)
+ gflags |= GETPASS_FORCE_LOWER;
+ if (flags & RPP_FORCEUPPER)
+ gflags |= GETPASS_FORCE_UPPER;
+ if (flags & RPP_SEVENBIT)
+ gflags |= GETPASS_7BIT;
+
+ fd[0] = input;
+ fd[1] = fd[2] = output;
+ ret = getpassfd(prompt, buf, bufsiz, fd, gflags, 0);
+ if ((gflags & GETPASS_ECHO) == 0)
+ (void)write(output, "\n", 1);
+
+#endif
if (input != STDIN_FILENO)
(void)close(input);
- return(buf);
+
+ return ret;
}
char *
Home |
Main Index |
Thread Index |
Old Index