OpenSSH 2.5.1p1 on RH 5.2 experience

Joachim Feise jfeise at ics.uci.edu
Fri Feb 23 04:18:08 EST 2001


I decided to upgrade to OpenSSH 2.5.1p1/openssl 0.9.6 on all my Linux boxes.
I ran into a compilation problem with the OpenSSH tarball on a machine running
Redhat 5.2. I used the tarball since I don't like RPMs, and there is no binary
RPM for RH 5.2 anyway.
The error manifests itself in the openbsd-compat directory.
This is the compiler warning:
make[1]: Entering directory `/usr/home/jfeise/source/openssh-2.5.1p1/openbsd-compat'
gcc -g -O2 -Wall -I/usr/local/openssl -I/usr/local/openssl -I. -I.. -I. -I./.. -DHAVE_CONFIG_H -c bsd-arc4random.c
In file included from ../includes.h:39,
                 from bsd-arc4random.c:25:
/usr/include/signal.h:217: warning: `struct sigaction' declared inside parameter list
/usr/include/signal.h:217: warning: its scope is only this definition or declaration,
/usr/include/signal.h:217: warning: which is probably not what you want.
/usr/include/signal.h:219: warning: `struct sigaction' declared inside parameter list

And this is repeated with nearly all files in the openbsd-compat directory.
Compilation finally stops in the main source directory with:
gcc -g -O2 -Wall -I/usr/local/openssl -I/usr/local/openssl -I. -I./openbsd-compat -I. -DETCDIR=\"/usr/local/etc\"
-D_PATH_SSH_PROGRAM=\"/usr/local/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/usr/local/libexec/ssh-askpass\"
-D_PATH_SFTP_SERVER=\"/usr/local/libexec/sftp-server\" -DHAVE_CONFIG_H -c cli.c
In file included from includes.h:39,
                 from cli.c:1:
/usr/include/signal.h:217: warning: `struct sigaction' declared inside parameter list
/usr/include/signal.h:217: warning: its scope is only this definition or declaration,
/usr/include/signal.h:217: warning: which is probably not what you want.
/usr/include/signal.h:219: warning: `struct sigaction' declared inside parameter list
cli.c: In function `cli_echo_disable':
cli.c:67: `SIG_BLOCK' undeclared (first use this function)
cli.c:67: (Each undeclared identifier is reported only once
cli.c:67: for each function it appears in.)
cli.c:71: sizeof applied to an incomplete type
cli.c:72: invalid use of undefined type `struct sigaction'
cli.c:73: warning: passing arg 2 of `sigaction' from incompatible pointer type
cli.c:73: warning: passing arg 3 of `sigaction' from incompatible pointer type
cli.c: In function `cli_echo_restore':
cli.c:93: `SIG_SETMASK' undeclared (first use this function)
cli.c:94: warning: passing arg 2 of `sigaction' from incompatible pointer type
cli.c: At top level:
cli.c:14: storage size of `nsa' isn't known
cli.c:15: storage size of `osa' isn't known
make: *** [cli.o] Error 1

I traced this down to a filename problem by analyzing the preprocessor output.
The openbsd-compat directory contains sigaction.c and sigaction.h
The includes.h file in the main source directory contains
#include <signal.h>, which results in the inclusion of /usr/include/signal.h
That file in turn contains #include <sigaction.h>, which *should* translate to
/usr/include/sigaction.h. However, the sigaction.h file in the openbsd-compat
directory is included instead.
My workaround is to rename the sigaction.h file to bsd-sigaction.h and update the
appropriate references to it:
--- openbsd-compat.h.orig       Thu Feb 22 08:50:50 2001
+++ openbsd-compat.h    Thu Feb 22 08:56:03 2001
@@ -16,7 +16,7 @@
 #include "mktemp.h"
 #include "daemon.h"
 #include "base64.h"
-#include "sigaction.h"
+#include "bsd-sigaction.h"
 #include "inet_aton.h"
 #include "inet_ntoa.h"
 #include "strsep.h"
--- sigaction.c.orig    Thu Feb 22 08:51:14 2001
+++ sigaction.c Thu Feb 22 08:56:24 2001
@@ -35,7 +35,7 @@
 
 #include <signal.h>
 #include "config.h"
-#include "sigaction.h"
+#include "bsd-sigaction.h"
 
 /* This file provides sigaction() emulation using sigvec() */
 /* Use only if this is non POSIX system */

Cheers,
-Joe





More information about the openssh-unix-dev mailing list