I've had fairly good sucecss with the portable OpenSSH 2.1.1p1 on Irix
6.2. There's one major nit, and a few things that configure got
wrong. I'm kinda deep in real work at the moment, so I don't have
time to delve heavily, but since configure specifically asked for
feedback on this port, I'm obliging.
The biggest problem I've run into so far is in the builtin PRNG
command timeout parameter. Frequently, when the value's set to 200
ms, I'll fail to get *any* results added to the entropy pool, and the
outgoing ssh connection fails as a result. Upping
ENTROPY_TIMEOUT_MSEC to 500 seems to have cleared this problem nicely
on my old crufty 144MHz Indy.
The builtin PRNG seeding is *much* preferable to the prior perl-based
EGD.
Many thanks,
-jml
A few high/easy portability points:
** There seems to be a pointer problem in vsnprintf:
cc -n32 -I/usr/local/include -I/usr/local/ssl/include
-DETCDIR=\"/usr/local/etc\"
-DSSH_PROGRAM=\"/usr/local/bin/ssh\"
-DSSH_ASKPASS_DEFAULT=\"/usr/local/libexec/ssh/ssh-askpass\"
-DHAVE_CONFIG_H -c bsd-snprintf.c
"bsd-snprintf.c", line 149: warning(1164): argument of type
"va_list *" is
incompatible with parameter of type "char *"
ret = vsprintf(p, fmt, ap);
^
"bsd-snprintf.c", line 176: warning(1177): argument is incompatible
with
formal parameter
return (vsnprintf(str, n, fmt, ap));
^
>From my read of the headers and manpages, there's a superfluous
"*" in
line 129, declaring va_list *ap, when it should be va_list ap.
Removing the spurious pointer declaration removes the above
complaints.
** Carelessness in prototyping versus use:
cc -n32 -I/usr/local/include -I/usr/local/ssl/include
-DETCDIR=\"/usr/local/etc\"
-DSSH_PROGRAM=\"/usr/local/bin/ssh\"
-DSSH_ASKPASS_DEFAULT=\"/usr/local/libexec/ssh/ssh-askpass\"
-DHAVE_CONFIG_H -c authfile.c
"authfile.c", line 166: warning(1164): argument of type "char
*" is
incompatible with parameter of type "unsigned char *"
(char *)passphrase, strlen(passphrase), NULL, NULL))
^
s/b "(unsigned char *)" to match prototype in <openssl/pem.h>
** Bad socket structure types
cc -n32 -I/usr/local/include -I/usr/local/ssl/include
-DETCDIR=\"/usr/local/etc\"
-DSSH_PROGRAM=\"/usr/local/bin/ssh\"
-DSSH_ASKPASS_DEFAULT=\"/usr/local/libexec/ssh/ssh-askpass\"
-DHAVE_CONFIG_H -c canohost.c
"canohost.c", line 41: warning(1164): argument of type "socklen_t
*" is
incompatible with parameter of type "int *"
if (getpeername(socket, (struct sockaddr *) & from, &fromlen) < 0)
{
^
"canohost.c", line 153: warning(1164): argument of type
"socklen_t *" is
incompatible with parameter of type "int *"
&option_size) >= 0 && option_size != 0) {
^
"canohost.c", line 221: warning(1164): argument of type
"socklen_t *" is
incompatible with parameter of type "int *"
if (getpeername(socket, (struct sockaddr *) & from, &fromlen) < 0)
{
^
"canohost.c", line 249: warning(1164): argument of type
"socklen_t *" is
incompatible with parameter of type "int *"
if (getsockname(sock, (struct sockaddr *)&from, &fromlen) < 0) {
^
"canohost.c", line 254: warning(1164): argument of type
"socklen_t *" is
incompatible with parameter of type "int *"
if (getpeername(sock, (struct sockaddr *) & from, &fromlen) < 0)
{
^
** and channels.c:
cc -n32 -I/usr/local/include -I/usr/local/ssl/include
-DETCDIR=\"/usr/local/etc\"
-DSSH_PROGRAM=\"/usr/local/bin/ssh\"
-DSSH_ASKPASS_DEFAULT=\"/usr/local/libexec/ssh/ssh-askpass\"
-DHAVE_CONFIG_H -c channels.c
"channels.c", line 516: warning(1164): argument of type
"socklen_t *" is
incompatible with parameter of type "int *"
newsock = accept(c->sock, &addr, &addrlen);
^
"channels.c", line 572: warning(1164): argument of type
"socklen_t *" is
incompatible with parameter of type "int *"
newsock = accept(c->sock, &addr, &addrlen);
^
"channels.c", line 628: warning(1164): argument of type
"socklen_t *" is
incompatible with parameter of type "int *"
newsock = accept(c->sock, &addr, &addrlen);
^
There's more, but I'm out of time at the moment.
-jml