Handle view only password in vncpasswd filter mode
diff --git a/unix/vncpasswd/vncpasswd.cxx b/unix/vncpasswd/vncpasswd.cxx
index 16c925e..8bd4e48 100644
--- a/unix/vncpasswd/vncpasswd.cxx
+++ b/unix/vncpasswd/vncpasswd.cxx
@@ -67,18 +67,28 @@
return 0;
}
-// Reads password from stdin and prints encrypted password to stdout.
+// Reads passwords from stdin and prints encrypted passwords to stdout.
static int encrypt_pipe() {
- char *result = getpassword(NULL);
- if (result) {
+ int i;
+
+ // We support a maximum of two passwords right now
+ for (i = 0;i < 2;i++) {
+ char *result = getpassword(NULL);
+ if (!result)
+ break;
+
ObfuscatedPasswd obfuscated(result);
if (fwrite(obfuscated.buf, obfuscated.length, 1, stdout) != 1) {
fprintf(stderr,"Writing to stdout failed\n");
return 1;
}
- return 0;
}
- else return 1;
+
+ // Did we fail to produce even one password?
+ if (i == 0)
+ return 1;
+
+ return 0;
}
static ObfuscatedPasswd* readpassword() {
diff --git a/unix/vncpasswd/vncpasswd.man b/unix/vncpasswd/vncpasswd.man
index e9250fd..a62c0ed 100644
--- a/unix/vncpasswd/vncpasswd.man
+++ b/unix/vncpasswd/vncpasswd.man
@@ -32,6 +32,9 @@
version to stdout. Note that in filter mode, short or even empty passwords
will be silently accepted.
+A view-only password must be separated from the normal password by a newline
+character.
+
.SH FILES
.TP