]> source.dussan.org Git - tigervnc.git/commitdiff
Handle view only password in vncpasswd filter mode
authorPierre Ossman <ossman@cendio.se>
Mon, 7 May 2018 14:03:45 +0000 (16:03 +0200)
committerPierre Ossman <ossman@cendio.se>
Mon, 7 May 2018 14:06:53 +0000 (16:06 +0200)
unix/vncpasswd/vncpasswd.cxx
unix/vncpasswd/vncpasswd.man

index 16c925ee5fa2acccc1ce64caa187ac71fb2e9e6a..8bd4e48e610dde319de7739a51eac81565dc3198 100644 (file)
@@ -67,18 +67,28 @@ static char* getpassword(const char* prompt) {
   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() {
index e9250fdf47bc6ecfeaa52d130a98588be5c73c40..a62c0edddc535eb16045ecf671dd2719e1d36dd0 100644 (file)
@@ -32,6 +32,9 @@ Filter mode.  Read a plain-text password from stdin and write an encrypted
 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