[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[MiNT] OpenSSH: PRNG is not seeded



Hello.

I'm currently rebuilding OpenSSH for MiNT.
Basically, it works perfectly, but I face something which looks like a bug.

I run sshd on the ARAnyM side.
Then I connect from Windows using PuTTY/KiTTY/WinSCP.

When trying to get more than 1 or 2 simultaneous connexions, I get the following message in the server log:
PRNG is not seeded

I hunted it and I arrived into OpenSSL, file crypto/rand/rand_unix.c.
See line 324:
http://git.openssl.org/gitweb/?p=openssl.git;a=blob;f=crypto/rand/rand_unix.c

The code tries to read /dev/urandom. It uses select() to determine if there is something to read, and avoid blocking. But it seems that something goes wrong in FreeMiNT, and sometimes select() does not indicate that data is available. Hence the damn "PRNG is not seeded" error.

If I replace the line 324 by "if (1)" to force:
/* can't use select, so just try to read once anyway */
    try_read = 1;
then it works perfectly and I don't have any trouble.

Is it possible that select() on /dev/urandom sometimes fails to signal that data is always available? Maybe that assumption is wrong? I'm not familiar with select() or even FreeMiNT devices, so I'm not sure to understand where the problem actually is.

Alan, did you encounter such trouble with sshd?
Do someone propose a best alternative than the patch I proposed above?

NB: The stack for the sftp-server tool must be set to 128k otherwise it may crash prematurely.

--
Vincent Rivière