Hi, Here's the 'fixprogs' perl script that got missed off the 2.1.0p1 distribution. Please put this in your openssh directory, and re-run 'make install'. it doesn't need to be made executable. For those interested, it runs through all the commands in the ssh_prng_cmds file and tests if they work (as opposed to 'configure' merely verifying that the executable exists, as it was before.) Commands that fail are marked and never run by openssh. There is primitive measurement of each command's entropy rate as well, but this may not survive the next release. Ta, -Andre' -- Andre Lucas <andre.lucas at dial.pipex.com> -------------- next part -------------- #!/usr/bin/perl # # fixprogs - run through the list of entropy commands and # score out the losers # $entscale = 50; # divisor for optional entropy measurement sub usage { return("Usage: $0 <command file>\n"); } if (($#ARGV == -1) || ($#ARGV>1)) { die(&usage); } # 'undocumented' option - run ent (in second param) on the output if ($#ARGV==1) { $entcmd=$ARGV[1] } else { $entcmd = "" }; $infilename = $ARGV[0]; if (!open(IN, "<".$infilename)) { die("Couldn't open input file"); } $outfilename=$infilename.".out"; if (!open(OUT, ">$outfilename")) { die("Couldn't open output file $outfilename"); } @infile=<IN>; select(OUT); $|=1; select(STDOUT); foreach (@infile) { if (/^\s*\#/ || /^\s*$/) { print OUT; next; } ($cmd, $path, $est) = /^\"([^\"]+)\"\s+([\w\/_-]+)\s+([\d\.\-]+)/o; @args = split(/ /, $cmd); if (! ($pid = fork())) { # child close STDIN; close STDOUT; close STDERR; open STDIN, "</dev/null"; open STDOUT, ">/dev/null"; open STDERR, ">/dev/null"; exec $path @args; exit 1; # shouldn't be here } # parent waitpid ($pid, 0); $ret=$? >> 8; if ($ret != 0) { $path = "undef"; } else { if ($entcmd ne "") { # now try to run ent on the command $mostargs=join(" ", splice(@args,1)); print "Evaluating '$path $mostargs'\n"; @ent = qx{$path $mostargs | $entcmd -b -t}; @ent = grep(/^1,/, @ent); ($null, $null, $rate) = split(/,/, $ent[0]); $est = $rate / $entscale; # scale the estimate back } } print OUT "\"$cmd\" $path $est\n"; } close(IN);