]> granicus.if.org Git - curl/commitdiff
Improve detection of sshd un/supported options.
authorYang Tse <yangsita@gmail.com>
Tue, 20 Nov 2007 14:10:09 +0000 (14:10 +0000)
committerYang Tse <yangsita@gmail.com>
Tue, 20 Nov 2007 14:10:09 +0000 (14:10 +0000)
Gather additional debug info when the test suite ssh server fails to start.

tests/sshserver.pl

index 563e9de725f9d7b600956205745f0586de34ac89..695b3728dbe329e0866fba03cd232ef157a78203 100644 (file)
@@ -61,6 +61,19 @@ sub searchpath {
   }
 }
 
+# Display contents of the given file.
+sub displayfile {
+    my ($file) = @_;
+    print "=== Start of file $file\n";
+    if(open(SINGLE, "<$file")) {
+        while(my $string = <SINGLE>) {
+            print "$string";
+        }
+        close(SINGLE);
+    }
+    print "=== End of file $file\n";
+}
+
 # Parse options
 do {
     if($ARGV[0] eq "-v") {
@@ -170,7 +183,8 @@ close CONF;
 # Check here for possible unsupported options, avoiding its use in sshd.
 sub sshd_supports_opt($) {
     my ($option) = @_;
-    my $err = grep /Unsupported .* $option/, qx($sshd -t -f $conffile -o $option=no 2>&1);
+    my $err = grep /((Unsupported)|(Bad configuration)|(Deprecated)) option.*$option/,
+                    qx($sshd -t -f $conffile -o $option=no 2>&1);
     return !$err;
 }
 
@@ -278,9 +292,13 @@ EOFSSH
 close SSHFILE ||  die "Could not close $conffile_ssh";
 
 
-if (system "$sshd -t -q -f $conffile") {
+# Verify that sshd supports our configuration file
+if (system "$sshd -t -f $conffile > log/sshd.log 2>&1") {
     # This is likely due to missing support for UsePam
     print "$sshd is too old and is not supported\n";
+    displayfile("log/sshd.log");
+    displayfile("$conffile");
+    unlink "log/sshd.log";
     unlink $conffile;
     exit 1;
 }
@@ -291,6 +309,11 @@ $rc >>= 8;
 if($rc && $verbose) {
     print STDERR "$sshd exited with $rc!\n";
 }
+if($rc) {
+    print "$sshd exited with $rc!\n";
+    displayfile("log/sshd.log");
+    displayfile("$conffile");
+}
 
 unlink $conffile;