From d645ac0bfae0c08873b6f799479638b2f65150e1 Mon Sep 17 00:00:00 2001 From: Dirk Meyer Date: Fri, 8 Mar 2002 20:51:56 +0000 Subject: [PATCH] - add defines for comatibility with older FreeBSD releases 3.x and 2.2.8 SHUT_RD, SHUT_WR, SHUT_RDWR INET_ADDRSTRLEN - add dirname() from FreeBSD 4.5 - use utimes instead of futimes fore FreeBSD < 4.x --- security/openssh/files/patch-ac | 22 +++++- security/openssh/files/patch-av | 88 ++++++++++++++++++++-- security/openssh/files/patch-sftp-server.c | 25 ++++++ 3 files changed, 127 insertions(+), 8 deletions(-) create mode 100644 security/openssh/files/patch-sftp-server.c diff --git a/security/openssh/files/patch-ac b/security/openssh/files/patch-ac index 2ab60dc3750f..f110376005d8 100644 --- a/security/openssh/files/patch-ac +++ b/security/openssh/files/patch-ac @@ -1,5 +1,5 @@ ---- includes.h.orig Fri Apr 14 06:30:31 2000 -+++ includes.h Sat May 13 12:12:41 2000 +--- includes.h.orig Sat Jan 26 17:44:22 2002 ++++ includes.h Fri Mar 8 20:59:17 2002 @@ -24,12 +24,12 @@ #include #include @@ -22,7 +22,7 @@ #include #include #include -@@ -65,5 +64,30 @@ +@@ -62,5 +61,46 @@ * client program. Socketpairs do not seem to work on all systems. */ #define USE_PIPES 1 @@ -50,6 +50,22 @@ + int64_t __ss_align; /* force desired structure storage alignment */ + char __ss_pad2[_SS_PAD2SIZE]; +}; ++ ++/* defines for comatibility with older FreeBSD releases */ ++#ifndef SHUT_RD ++#define SHUT_RD 0 ++#endif ++#ifndef SHUT_WR ++#define SHUT_WR 1 ++#endif ++#ifndef SHUT_RDWR ++#define SHUT_RDWR 2 ++#endif ++ ++#ifndef INET_ADDRSTRLEN ++#define INET_ADDRSTRLEN 46 ++#endif ++ +#endif #endif /* INCLUDES_H */ diff --git a/security/openssh/files/patch-av b/security/openssh/files/patch-av index 146643ad6122..446b88f8c8a3 100644 --- a/security/openssh/files/patch-av +++ b/security/openssh/files/patch-av @@ -1,8 +1,86 @@ ---- auth.c.orig Sat Nov 4 17:30:17 2000 -+++ auth.c Sat Nov 4 17:29:00 2000 -@@ -111,6 +111,16 @@ - return 0; - } +--- auth.c.orig Fri Mar 1 14:12:10 2002 ++++ auth.c Fri Mar 8 20:57:17 2002 +@@ -25,7 +25,77 @@ + #include "includes.h" + RCSID("$OpenBSD: auth.c,v 1.35 2002/03/01 13:12:10 markus Exp $"); + ++#if defined(__FreeBSD__) && __FreeBSD__ <= 3 ++/* ++ * Copyright (c) 1997 Todd C. Miller ++ * All rights reserved. ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * 2. Redistributions in binary form must reproduce the above copyright ++ * notice, this list of conditions and the following disclaimer in the ++ * documentation and/or other materials provided with the distribution. ++ * 3. The name of the author may not be used to endorse or promote products ++ * derived from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, ++ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ++ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ++ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ++ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ++ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ++ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ ++char * ++dirname(path) ++ const char *path; ++{ ++ static char bname[MAXPATHLEN]; ++ register const char *endp; ++ ++ /* Empty or NULL string gets treated as "." */ ++ if (path == NULL || *path == '\0') { ++ (void)strcpy(bname, "."); ++ return(bname); ++ } ++ ++ /* Strip trailing slashes */ ++ endp = path + strlen(path) - 1; ++ while (endp > path && *endp == '/') ++ endp--; ++ ++ /* Find the start of the dir */ ++ while (endp > path && *endp != '/') ++ endp--; ++ ++ /* Either the dir is "/" or there are no slashes */ ++ if (endp == path) { ++ (void)strcpy(bname, *endp == '/' ? "/" : "."); ++ return(bname); ++ } else { ++ do { ++ endp--; ++ } while (endp > path && *endp == '/'); ++ } ++ ++ if (endp - path + 2 > sizeof(bname)) { ++ errno = ENAMETOOLONG; ++ return(NULL); ++ } ++ (void)strncpy(bname, path, endp - path + 1); ++ bname[endp - path + 1] = '\0'; ++ return(bname); ++} ++#else + #include ++#endif + + #include "xmalloc.h" + #include "match.h" +@@ -141,6 +211,16 @@ + } + ga_free(); } +#ifdef __FreeBSD__ + /* Fail if the account's expiration time has passed. */ diff --git a/security/openssh/files/patch-sftp-server.c b/security/openssh/files/patch-sftp-server.c new file mode 100644 index 000000000000..09b2b630bf7d --- /dev/null +++ b/security/openssh/files/patch-sftp-server.c @@ -0,0 +1,25 @@ +--- sftp-server.c.orig Wed Feb 13 01:28:13 2002 ++++ sftp-server.c Fri Mar 8 21:15:56 2002 +@@ -614,6 +614,9 @@ + u_int32_t id; + int handle, fd, ret; + int status = SSH2_FX_OK; ++#if defined(__FreeBSD__) && __FreeBSD__ <= 3 ++ char *name; ++#endif + + id = get_int(); + handle = get_handle(); +@@ -634,7 +637,12 @@ + status = errno_to_portable(errno); + } + if (a->flags & SSH2_FILEXFER_ATTR_ACMODTIME) { ++#if defined(__FreeBSD__) && __FreeBSD__ <= 3 ++ name = handle_to_name(handle); ++ ret = utimes(name, attrib_to_tv(a)); ++#else + ret = futimes(fd, attrib_to_tv(a)); ++#endif + if (ret == -1) + status = errno_to_portable(errno); + }