[Bug 143] Add reference to "rsync" in FAQ and documentation.
    Sturle Sunde 
    sturle.sunde at usit.uio.no
       
    Thu Apr 18 18:47:09 EST 2002
    
    
  
Yuliy Minchev <yuliy at mobiltel.bg> writes:
> rsync -av -e ssh /home/joe/stuff joeuser at joe.com:/home/joeuser/stuff
There is a bug if you depend on ssh-rand-helper and possibly external
programs to collect random data:
  [sturles at hpsan]~ $ rsync -ave ssh file sturle at anotherhost:/tmp/file
  Couldn't wait for child 'ls -alni /var/log' completion: No child processes
  Couldn't wait for child 'ls -alni /var/adm' completion: No child processes
  [... for all commands in /etc/ssh/ssh_prng_cmds ...]
  Not enough entropy in RNG
  ssh-rand-helper child produced insufficient data
  unexpected EOF in read_timeout
The reason for this is of course that rsync ignores SIGCHLD, and ssh
inherits this.
Here is a patch against 3.1p2 that fixes the problem.  I hope it
doesn't break anything else..:
--- entropy.c.orig      Sun Mar 10 20:42:07 2002
+++ entropy.c   Thu Apr 18 07:04:10 2002
@@ -61,6 +61,7 @@
        pid_t pid;
        int ret;
        unsigned char buf[RANDOM_SEED_SIZE];
+       mysig_t old_sigchld;
 
        if (RAND_status() == 1) {
                debug3("RNG is ready, skipping seeding");
@@ -74,6 +75,7 @@
        if (pipe(p) == -1)
                fatal("pipe: %s", strerror(errno));
 
+       old_sigchld = mysignal(SIGCHLD, SIG_DFL);
        if ((pid = fork()) == -1)
                fatal("Couldn't fork: %s", strerror(errno));
        if (pid == 0) {
@@ -121,6 +123,7 @@
        if (WEXITSTATUS(ret) != 0)
                fatal("ssh-rand-helper exit with exit status %d", ret);
 
+       mysignal(SIGCHLD, old_sigchld);
        RAND_add(buf, sizeof(buf), sizeof(buf));
        memset(buf, '\0', sizeof(buf));
-- 
Sturle        Before a mad scientist goes mad, there's probably a time
~~~~~~        when he's only partially mad.  And this is the time when 
              he's going to throw his best parties.     -- Jack Handey
    
    
More information about the openssh-unix-dev
mailing list