[PATCH]: Port to Mac OS X/Darwin, misc
Wilfredo S á nchez
wsanchez at apple.com
Tue Aug 15 13:31:22 EST 2000
Below I've includes a patch which helps build OpenSSH outside from a
read-only source tree, find OpenSSL on Mac OS X, and fix a typo.
This applies to OpenSSH 2.1.1p4.
You should already have gotten a note from Melissa O'Neil about a
conflict with the crc32() symbol in zlib, which was causing a crash on
Darwin.
I've noticed another bug. If ssh is setuid, I get a permission denied
error while it tries to open ~/.ssh/prng_seed. I'm guessing this is
because ssh is running with euid=0 at that point; since my home dir
is exported from an NFS server with maproot=nobody, this fails. Aside
from that problem, there may be a larger problem that ssh is running
with euid=0 when it doesn't need to be.
Thanks,
-Fred
Summary:
Makefile.in:
- OpenSSH doesn't build well if you are building outside of the source tree.
- mkinstalldirs lives in $(srcdir), not necessarily '.'.
- fixprogs lives in $(srcdir), not necessarily '.'.
- Separate CFLAGS from CPPFLAGS, so one can override CFLAGS from the command
line without whacking include paths.
configure.in:
- Find OpenSSL install as a framework.
(-framework OpenSSL instead of -lcrypto)
uidswap.c:
- Fix apparent typo.
Index: Services/OpenSSH/openssh/Makefile.in
diff -u Services/OpenSSH/openssh/Makefile.in:1.1.1.3
Services/OpenSSH/openssh/Makefile.in:1.7
--- Services/OpenSSH/openssh/Makefile.in:1.1.1.3 Wed Jul 12 20:13:08 2000
+++ Services/OpenSSH/openssh/Makefile.in Mon Aug 14 19:36:09 2000
@@ -21,7 +21,8 @@
CC=@CC@
LD=@LD@
PATHS=-DETCDIR=\"$(sysconfdir)\" -DSSH_PROGRAM=\"$(SSH_PROGRAM)\"
-DSSH_ASKPASS_DEFAULT=\"$(ASKPASS_PROGRAM)\"
-CFLAGS=@CFLAGS@ $(PATHS) @DEFS@
+CFLAGS=@CFLAGS@
+CPPFLAGS=@CPPFLAGS@ $(PATHS) @DEFS@ -I. -I$(srcdir)
LIBS=@LIBS@
AR=@AR@
RANLIB=@RANLIB@
@@ -118,11 +119,11 @@
install: manpages $(TARGETS) install-files host-key
install-files:
- ./mkinstalldirs $(DESTDIR)$(bindir)
- ./mkinstalldirs $(DESTDIR)$(sbindir)
- ./mkinstalldirs $(DESTDIR)$(mandir)
- ./mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1
- ./mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8
+ $(srcdir)/mkinstalldirs $(DESTDIR)$(bindir)
+ $(srcdir)/mkinstalldirs $(DESTDIR)$(sbindir)
+ $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)
+ $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)1
+ $(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8
$(INSTALL) -m 4755 -s ssh $(DESTDIR)$(bindir)/ssh
$(INSTALL) -s scp $(DESTDIR)$(bindir)/scp
$(INSTALL) -s ssh-add $(DESTDIR)$(bindir)/ssh-add
@@ -140,12 +141,12 @@
-rm -f $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
ln -s ssh.1 $(DESTDIR)$(mandir)/$(mansubdir)1/slogin.1
if [ ! -f $(DESTDIR)$(sysconfdir)/ssh_config -a ! -f
$(DESTDIR)$(sysconfdir)/sshd_config ]; then \
- ./mkinstalldirs $(DESTDIR)$(sysconfdir); \
+ $(srcdir)/mkinstalldirs $(DESTDIR)$(sysconfdir); \
$(INSTALL) -m 644 ssh_config.out
$(DESTDIR)$(sysconfdir)/ssh_config; \
$(INSTALL) -m 644 sshd_config.out
$(DESTDIR)$(sysconfdir)/sshd_config; \
fi
if [ -f ssh_prng_cmds -a ! -z "$(INSTALL_SSH_PRNG_CMDS)" ]; then \
- $(PERL) fixprogs ssh_prng_cmds $(ENT); \
+ $(PERL) $(srcdir)/fixprogs ssh_prng_cmds $(ENT); \
$(INSTALL) -m 644 ssh_prng_cmds.out
$(DESTDIR)$(sysconfdir)/ssh_prng_cmds; \
fi
Index: Services/OpenSSH/openssh/configure.in
diff -u Services/OpenSSH/openssh/configure.in:1.1.1.4
Services/OpenSSH/openssh/configure.in:1.5
--- Services/OpenSSH/openssh/configure.in:1.1.1.4 Thu Aug 3 14:29:33 2000
+++ Services/OpenSSH/openssh/configure.in Mon Aug 14 19:38:51 2000
@@ -323,19 +326,25 @@
tryssldir="$tryssldir $prefix"
fi
AC_CACHE_CHECK([for OpenSSL directory], ac_cv_openssldir, [
-
- for ssldir in "" $tryssldir /usr/local/openssl /usr/lib/openssl
/usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do
- if test ! -z "$ssldir" ; then
+ for ssldir in "" $tryssldir /usr/local/openssl /usr/lib/openssl
/usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl FRAMEWORK
; do
+ if test "x$ssldir" = "xFRAMEWORK" ; then
+ LDFLAGS="$saved_LDFLAGS"
+ CFLAGS="$saved_CFLAGS"
+ LIBCRYPTO="-framework openssl"
+ elif test ! -z "$ssldir" ; then
LDFLAGS="$saved_LDFLAGS -L$ssldir/lib -L$ssldir"
CFLAGS="$saved_CFLAGS -I$ssldir/include"
if test ! -z "$need_dash_r" ; then
LDFLAGS="$LDFLAGS -R$ssldir/lib -R$ssldir"
fi
+ LIBCRYPTO="-lcrypto"
else
LDFLAGS="$saved_LDFLAGS"
+ CFLAGS="$saved_CFLAGS"
+ LIBCRYPTO="-lcrypto"
fi
- LIBS="$saved_LIBS -lcrypto"
+ LIBS="$saved_LIBS $LIBCRYPTO"
# Basic test to check for compatible version and correct linking
# *does not* test for RSA - that comes later.
@@ -372,7 +381,13 @@
ac_cv_openssldir=$ssldir
])
-if (test ! -z "$ac_cv_openssldir" && test "x$ac_cv_openssldir" !=
"x(system)") ; then
+if test "x$ssldir" = "xFRAMEWORK" ; then
+ AC_DEFINE(HAVE_OPENSSL)
+ ssldir="(framework)"
+ LDFLAGS="$saved_LDFLAGS"
+ CFLAGS="$saved_CFLAGS"
+ LIBCRYPTO="-framework openssl"
+elif test ! -z "$ac_cv_openssldir" && test "x$ac_cv_openssldir" !=
"x(system)" ; then
AC_DEFINE(HAVE_OPENSSL)
dnl Need to recover ssldir - test above runs in subshell
ssldir=$ac_cv_openssldir
@@ -384,8 +399,9 @@
if test ! -z "$blibpath" ; then
blibpath="$blibpath:$ssldir:$ssldir/lib"
fi
+ LIBCRYPTO="-lcrypto"
fi
-LIBS="$saved_LIBS -lcrypto"
+LIBS="$saved_LIBS $LIBCRYPTO"
# Now test RSA support
saved_LIBS="$LIBS"
@@ -432,7 +448,7 @@
else
RSA_MSG="yes (using RSAref)"
AC_MSG_RESULT(using RSAref)
- LIBS="$saved_LIBS -lcrypto -lRSAglue -lrsaref"
+ LIBS="$saved_LIBS $LIBCRYPTO -lRSAglue -lrsaref"
fi
fi
fi
Index: Services/OpenSSH/openssh/uidswap.c
diff -u Services/OpenSSH/openssh/uidswap.c:1.1.1.3
Services/OpenSSH/openssh/uidswap.c:1.3
--- Services/OpenSSH/openssh/uidswap.c:1.1.1.3 Wed Jul 12 20:13:17 2000
+++ Services/OpenSSH/openssh/uidswap.c Wed Jul 12 20:27:37 2000
@@ -48,7 +48,7 @@
/* Set the effective uid to the given (unprivileged) uid. */
if (seteuid(uid) == -1)
debug("seteuid %d: %.100s", (int) uid, strerror(errno));
-#else /* SAVED_IDS_WORK_WITH_SETUID */
+#else /* SAVED_IDS_WORK_WITH_SETEUID */
/* Propagate the privileged uid to all of our uids. */
if (setuid(geteuid()) < 0)
debug("setuid %d: %.100s", (int) geteuid(), strerror(errno));
Wilfredo Sánchez, wsanchez at apple.com
Open Source Engineering Lead
Apple Computer, Inc., Core Operating System Group
1 Infinite Loop, Cupertino, CA 94086, 408.974-5174
More information about the openssh-unix-dev
mailing list