diff options
Diffstat (limited to 'openbsd-compat')
44 files changed, 259 insertions, 304 deletions
diff --git a/openbsd-compat/Makefile.in b/openbsd-compat/Makefile.in index aca9eba7591c..d51eacf6562a 100644 --- a/openbsd-compat/Makefile.in +++ b/openbsd-compat/Makefile.in @@ -16,9 +16,9 @@ RANLIB=@RANLIB@ INSTALL=@INSTALL@ LDFLAGS=-L. @LDFLAGS@ -OPENBSD=base64.o basename.o bcrypt_pbkdf.o bindresvport.o blowfish.o daemon.o dirname.o fmt_scaled.o getcwd.o getgrouplist.o getopt_long.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o pwcache.o readpassphrase.o reallocarray.o realpath.o rresvport.o setenv.o setproctitle.o sha1.o sha2.o rmd160.o md5.o sigact.o strlcat.o strlcpy.o strmode.o strnlen.o strptime.o strsep.o strtonum.o strtoll.o strtoul.o strtoull.o timingsafe_bcmp.o vis.o blowfish.o bcrypt_pbkdf.o explicit_bzero.o +OPENBSD=base64.o basename.o bcrypt_pbkdf.o bindresvport.o blowfish.o daemon.o dirname.o fmt_scaled.o getcwd.o getgrouplist.o getopt_long.o getrrsetbyname.o glob.o inet_aton.o inet_ntoa.o inet_ntop.o mktemp.o pwcache.o readpassphrase.o reallocarray.o realpath.o rresvport.o setenv.o setproctitle.o sha1.o sha2.o rmd160.o md5.o sigact.o strcasestr.o strlcat.o strlcpy.o strmode.o strnlen.o strptime.o strsep.o strtonum.o strtoll.o strtoul.o strtoull.o timingsafe_bcmp.o vis.o blowfish.o bcrypt_pbkdf.o explicit_bzero.o -COMPAT=arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o getrrsetbyname-ldns.o bsd-err.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-setres_id.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xmmap.o xcrypt.o kludge-fd_set.o +COMPAT=arc4random.o bsd-asprintf.o bsd-closefrom.o bsd-cray.o bsd-cygwin_util.o bsd-getpeereid.o getrrsetbyname-ldns.o bsd-err.o bsd-misc.o bsd-nextstep.o bsd-openpty.o bsd-poll.o bsd-setres_id.o bsd-snprintf.o bsd-statvfs.o bsd-waitpid.o fake-rfc2553.o openssl-compat.o xcrypt.o kludge-fd_set.o PORTS=port-aix.o port-irix.o port-linux.o port-solaris.o port-tun.o port-uw.o @@ -36,7 +36,7 @@ libopenbsd-compat.a: $(COMPAT) $(OPENBSD) $(PORTS) $(RANLIB) $@ clean: - rm -f *.o *.a core + rm -f *.o *.a core distclean: clean rm -f Makefile *~ diff --git a/openbsd-compat/base64.h b/openbsd-compat/base64.h index 732c6b3f8333..bd772931b46d 100644 --- a/openbsd-compat/base64.h +++ b/openbsd-compat/base64.h @@ -1,5 +1,3 @@ -/* $Id: base64.h,v 1.6 2003/08/29 16:59:52 mouring Exp $ */ - /* * Copyright (c) 1996 by Internet Software Consortium. * @@ -49,7 +47,7 @@ #ifndef HAVE___B64_NTOP # ifndef HAVE_B64_NTOP -int b64_ntop(u_char const *src, size_t srclength, char *target, +int b64_ntop(u_char const *src, size_t srclength, char *target, size_t targsize); # endif /* !HAVE_B64_NTOP */ # define __b64_ntop(a,b,c,d) b64_ntop(a,b,c,d) diff --git a/openbsd-compat/bsd-asprintf.c b/openbsd-compat/bsd-asprintf.c index 7b83448ca2cd..822367154ca4 100644 --- a/openbsd-compat/bsd-asprintf.c +++ b/openbsd-compat/bsd-asprintf.c @@ -78,7 +78,7 @@ int asprintf(char **str, const char *fmt, ...) { va_list ap; int ret; - + *str = NULL; va_start(ap, fmt); ret = vasprintf(str, fmt, ap); diff --git a/openbsd-compat/bsd-cray.c b/openbsd-compat/bsd-cray.c index f1bbd7dece07..c02e6326123c 100644 --- a/openbsd-compat/bsd-cray.c +++ b/openbsd-compat/bsd-cray.c @@ -1,10 +1,9 @@ -/* - * $Id: bsd-cray.c,v 1.17 2007/08/15 09:17:43 dtucker Exp $ +/* * * bsd-cray.c * * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) - * Significant portions provided by + * Significant portions provided by * Wayne Schroeder, SDSC <schroeder@sdsc.edu> * William Jones, UTexas <jones@tacc.utexas.edu> * @@ -268,7 +267,7 @@ cray_setup (uid_t uid, char *username, const char *command) usent.uname = username; usent.host = hostname; usent.ttyn = ttyn; - usent.caller = IA_SSHD; + usent.caller = IA_SSHD; usent.pswdlist = &pwdacm; usent.ueptr = &ue; usent.flags = IA_INTERACTIVE | IA_FFLAG; @@ -352,7 +351,7 @@ cray_setup (uid_t uid, char *username, const char *command) /* * These are failed return codes from ia_user() */ - switch (ia_rcode) + switch (ia_rcode) { case IA_BADAUTH: printf("Bad authorization, access denied.\n"); @@ -407,7 +406,7 @@ cray_setup (uid_t uid, char *username, const char *command) */ ia_failure(&fsent, &fret); - exit(1); + exit(1); } ia_mlsrcode = IA_NORMAL; @@ -441,7 +440,7 @@ cray_setup (uid_t uid, char *username, const char *command) * There is no return because ia_failure exits. */ ia_failure(&fsent,&fret); - exit(1); + exit(1); } /* Provide login status information */ @@ -526,7 +525,7 @@ cray_setup (uid_t uid, char *username, const char *command) break; default: valid_acct = nam2acid(acct_name); - if (valid_acct == -1) + if (valid_acct == -1) printf( "Account id not found for" " account name \"%s\"\n\n", @@ -576,9 +575,9 @@ cray_setup (uid_t uid, char *username, const char *command) exit(1); } - /* - * Now set shares, quotas, limits, including CPU time for the - * (interactive) job and process, and set up permissions + /* + * Now set shares, quotas, limits, including CPU time for the + * (interactive) job and process, and set up permissions * (for chown etc), etc. */ if (setshares(ue.ue_uid, valid_acct, printf, 0, 0)) { @@ -656,7 +655,7 @@ drop_cray_privs() usrv.sv_minlvl = sysv.sy_minlvl; usrv.sv_actlvl = sysv.sy_minlvl; usrv.sv_maxlvl = sysv.sy_maxlvl; - } + } usrv.sv_actcmp = 0; usrv.sv_valcmp = sysv.sy_valcmp; diff --git a/openbsd-compat/bsd-cray.h b/openbsd-compat/bsd-cray.h index 774eceb5a200..ca626a021c1a 100644 --- a/openbsd-compat/bsd-cray.h +++ b/openbsd-compat/bsd-cray.h @@ -1,8 +1,6 @@ -/* $Id: bsd-cray.h,v 1.12 2005/02/02 06:10:11 dtucker Exp $ */ - /* * Copyright (c) 2002, Cray Inc. (Wendy Palm <wendyp@cray.com>) - * Significant portions provided by + * Significant portions provided by * Wayne Schroeder, SDSC <schroeder@sdsc.edu> * William Jones, UTexas <jones@tacc.utexas.edu> * diff --git a/openbsd-compat/bsd-cygwin_util.c b/openbsd-compat/bsd-cygwin_util.c index 8672ccf7f90e..398a5f617af5 100644 --- a/openbsd-compat/bsd-cygwin_util.c +++ b/openbsd-compat/bsd-cygwin_util.c @@ -39,12 +39,12 @@ #include "xmalloc.h" -int +int binary_open(const char *filename, int flags, ...) { va_list ap; mode_t mode; - + va_start(ap, flags); mode = va_arg(ap, mode_t); va_end(ap); diff --git a/openbsd-compat/bsd-cygwin_util.h b/openbsd-compat/bsd-cygwin_util.h index 79cb2a197c1e..9cef694b9a7c 100644 --- a/openbsd-compat/bsd-cygwin_util.h +++ b/openbsd-compat/bsd-cygwin_util.h @@ -1,5 +1,3 @@ -/* $Id: bsd-cygwin_util.h,v 1.18 2014/05/27 04:34:43 djm Exp $ */ - /* * Copyright (c) 2000, 2001, 2011, 2013 Corinna Vinschen <vinschen@redhat.com> * diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c index 18bf62dd8183..6f3bc8f1d4f0 100644 --- a/openbsd-compat/bsd-misc.c +++ b/openbsd-compat/bsd-misc.c @@ -70,8 +70,8 @@ int setlogin(const char *name) #endif /* !HAVE_SETLOGIN */ #ifndef HAVE_INNETGR -int innetgr(const char *netgroup, const char *host, - const char *user, const char *domain) +int innetgr(const char *netgroup, const char *host, + const char *user, const char *domain) { return (0); } @@ -96,7 +96,7 @@ const char *strerror(int e) { extern int sys_nerr; extern char *sys_errlist[]; - + if ((e >= 0) && (e < sys_nerr)) return (sys_errlist[e]); @@ -111,10 +111,10 @@ int utimes(char *filename, struct timeval *tvp) ub.actime = tvp[0].tv_sec; ub.modtime = tvp[1].tv_sec; - + return (utime(filename, &ub)); } -#endif +#endif #ifndef HAVE_TRUNCATE int truncate(const char *path, off_t length) @@ -149,9 +149,9 @@ int nanosleep(const struct timespec *req, struct timespec *rem) saverrno = errno; (void) gettimeofday (&tstop, NULL); errno = saverrno; - tremain.tv_sec = time2wait.tv_sec - + tremain.tv_sec = time2wait.tv_sec - (tstop.tv_sec - tstart.tv_sec); - tremain.tv_usec = time2wait.tv_usec - + tremain.tv_usec = time2wait.tv_usec - (tstop.tv_usec - tstart.tv_usec); tremain.tv_sec += tremain.tv_usec / 1000000L; tremain.tv_usec %= 1000000L; diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h index 27abb2e92b62..6f08b09faaa6 100644 --- a/openbsd-compat/bsd-misc.h +++ b/openbsd-compat/bsd-misc.h @@ -1,5 +1,3 @@ -/* $Id: bsd-misc.h,v 1.25 2013/08/04 11:48:41 dtucker Exp $ */ - /* * Copyright (c) 1999-2004 Damien Miller <djm@mindrot.org> * @@ -49,7 +47,7 @@ int setegid(uid_t); #if !defined(HAVE_STRERROR) && defined(HAVE_SYS_ERRLIST) && defined(HAVE_SYS_NERR) const char *strerror(int); -#endif +#endif #if !defined(HAVE_SETLINEBUF) #define setlinebuf(a) (setvbuf((a), NULL, _IOLBF, 0)) diff --git a/openbsd-compat/bsd-nextstep.c b/openbsd-compat/bsd-nextstep.c index 8195af88a4ba..d52443f6d261 100644 --- a/openbsd-compat/bsd-nextstep.c +++ b/openbsd-compat/bsd-nextstep.c @@ -29,7 +29,7 @@ #include <sys/wait.h> #include "bsd-nextstep.h" -pid_t +pid_t posix_wait(int *status) { union wait statusp; diff --git a/openbsd-compat/bsd-nextstep.h b/openbsd-compat/bsd-nextstep.h index ca5b4b54a439..610f9e381f31 100644 --- a/openbsd-compat/bsd-nextstep.h +++ b/openbsd-compat/bsd-nextstep.h @@ -1,5 +1,3 @@ -/* $Id: bsd-nextstep.h,v 1.9 2003/08/29 16:59:52 mouring Exp $ */ - /* * Copyright (c) 2000,2001 Ben Lindstrom. All rights reserved. * diff --git a/openbsd-compat/bsd-openpty.c b/openbsd-compat/bsd-openpty.c index 9777eb556d2d..b28235860e7a 100644 --- a/openbsd-compat/bsd-openpty.c +++ b/openbsd-compat/bsd-openpty.c @@ -122,7 +122,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *termp, } /* - * Try to push the appropriate streams modules, as described + * Try to push the appropriate streams modules, as described * in Solaris pts(7). */ ioctl(*aslave, I_PUSH, "ptem"); @@ -184,7 +184,7 @@ openpty(int *amaster, int *aslave, char *name, struct termios *termp, struct termios tio; for (i = 0; i < num_ptys; i++) { - snprintf(ptbuf, sizeof(ptbuf), "/dev/pty%c%c", + snprintf(ptbuf, sizeof(ptbuf), "/dev/pty%c%c", ptymajors[i / num_minors], ptyminors[i % num_minors]); snprintf(ttbuf, sizeof(ttbuf), "/dev/tty%c%c", ptymajors[i / num_minors], ptyminors[i % num_minors]); diff --git a/openbsd-compat/bsd-poll.c b/openbsd-compat/bsd-poll.c index 73a85248031e..c8e6222c0e34 100644 --- a/openbsd-compat/bsd-poll.c +++ b/openbsd-compat/bsd-poll.c @@ -1,5 +1,3 @@ -/* $Id: bsd-poll.c,v 1.6 2014/02/05 23:44:13 dtucker Exp $ */ - /* * Copyright (c) 2004, 2005, 2007 Darren Tucker (dtucker at zip com au). * diff --git a/openbsd-compat/bsd-setres_id.c b/openbsd-compat/bsd-setres_id.c index 018bde8c7682..696ae7b28136 100644 --- a/openbsd-compat/bsd-setres_id.c +++ b/openbsd-compat/bsd-setres_id.c @@ -1,5 +1,3 @@ -/* $Id: bsd-setres_id.c,v 1.2 2013/12/07 21:23:09 djm Exp $ */ - /* * Copyright (c) 2012 Darren Tucker (dtucker at zip com au). * diff --git a/openbsd-compat/bsd-setres_id.h b/openbsd-compat/bsd-setres_id.h index 6c269e0b9133..0350a596e9ac 100644 --- a/openbsd-compat/bsd-setres_id.h +++ b/openbsd-compat/bsd-setres_id.h @@ -1,5 +1,3 @@ -/* $Id: bsd-setres_id.h,v 1.1 2012/11/05 06:04:37 dtucker Exp $ */ - /* * Copyright (c) 2012 Darren Tucker (dtucker at zip com au). * diff --git a/openbsd-compat/bsd-statvfs.c b/openbsd-compat/bsd-statvfs.c index 2b1da80ec883..458dbe89c16c 100644 --- a/openbsd-compat/bsd-statvfs.c +++ b/openbsd-compat/bsd-statvfs.c @@ -1,5 +1,3 @@ -/* $Id: bsd-statvfs.c,v 1.2 2014/01/17 07:10:59 dtucker Exp $ */ - /* * Copyright (c) 2008,2014 Darren Tucker <dtucker@zip.com.au> * diff --git a/openbsd-compat/bsd-statvfs.h b/openbsd-compat/bsd-statvfs.h index dfd60997419b..815ec03b280d 100644 --- a/openbsd-compat/bsd-statvfs.h +++ b/openbsd-compat/bsd-statvfs.h @@ -1,5 +1,3 @@ -/* $Id: bsd-statvfs.h,v 1.3 2014/01/17 07:48:22 dtucker Exp $ */ - /* * Copyright (c) 2008,2014 Darren Tucker <dtucker@zip.com.au> * diff --git a/openbsd-compat/bsd-waitpid.c b/openbsd-compat/bsd-waitpid.c index 40e6ffaa82d6..113fb1ea91ae 100644 --- a/openbsd-compat/bsd-waitpid.c +++ b/openbsd-compat/bsd-waitpid.c @@ -24,7 +24,7 @@ #include "includes.h" -#ifndef HAVE_WAITPID +#ifndef HAVE_WAITPID #include <errno.h> #include <sys/wait.h> #include "bsd-waitpid.h" @@ -43,11 +43,11 @@ waitpid(int pid, int *stat_loc, int options) /* wait4() wants pid=0 for indiscriminate wait. */ pid = 0; } - wait_pid = wait4(pid, &statusp, options, NULL); + wait_pid = wait4(pid, &statusp, options, NULL); if (stat_loc) - *stat_loc = (int) statusp.w_status; + *stat_loc = (int) statusp.w_status; - return (wait_pid); + return (wait_pid); } #endif /* !HAVE_WAITPID */ diff --git a/openbsd-compat/bsd-waitpid.h b/openbsd-compat/bsd-waitpid.h index 2d853db61689..5ce3ee4b530e 100644 --- a/openbsd-compat/bsd-waitpid.h +++ b/openbsd-compat/bsd-waitpid.h @@ -1,5 +1,3 @@ -/* $Id: bsd-waitpid.h,v 1.5 2003/08/29 16:59:52 mouring Exp $ */ - /* * Copyright (c) 2000 Ben Lindstrom. All rights reserved. * diff --git a/openbsd-compat/explicit_bzero.c b/openbsd-compat/explicit_bzero.c index 3c85a4843a47..5078134d137a 100644 --- a/openbsd-compat/explicit_bzero.c +++ b/openbsd-compat/explicit_bzero.c @@ -7,6 +7,8 @@ #include "includes.h" +#include <string.h> + /* * explicit_bzero - don't let the compiler optimize away bzero */ @@ -32,6 +34,17 @@ static void (* volatile ssh_bzero)(void *, size_t) = bzero; void explicit_bzero(void *p, size_t n) { + /* + * clang -fsanitize=memory needs to intercept memset-like functions + * to correctly detect memory initialisation. Make sure one is called + * directly since our indirection trick above sucessfully confuses it. + */ +#if defined(__has_feature) +# if __has_feature(memory_sanitizer) + memset(p, 0, n); +# endif +#endif + ssh_bzero(p, n); } diff --git a/openbsd-compat/fake-rfc2553.c b/openbsd-compat/fake-rfc2553.c index 096d9e092e29..d5a62975aa46 100644 --- a/openbsd-compat/fake-rfc2553.c +++ b/openbsd-compat/fake-rfc2553.c @@ -1,7 +1,7 @@ /* * Copyright (C) 2000-2003 Damien Miller. All rights reserved. * Copyright (C) 1999 WIDE Project. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -13,7 +13,7 @@ * 3. Neither the name of the project nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -44,8 +44,8 @@ #include <arpa/inet.h> #ifndef HAVE_GETNAMEINFO -int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, - size_t hostlen, char *serv, size_t servlen, int flags) +int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, + size_t hostlen, char *serv, size_t servlen, int flags) { struct sockaddr_in *sin = (struct sockaddr_in *)sa; struct hostent *hp; @@ -67,11 +67,11 @@ int getnameinfo(const struct sockaddr *sa, size_t salen, char *host, else return (0); } else { - hp = gethostbyaddr((char *)&sin->sin_addr, + hp = gethostbyaddr((char *)&sin->sin_addr, sizeof(struct in_addr), AF_INET); if (hp == NULL) return (EAI_NODATA); - + if (strlcpy(host, hp->h_name, hostlen) >= hostlen) return (EAI_MEMORY); else @@ -102,7 +102,7 @@ gai_strerror(int err) default: return ("unknown/invalid error."); } -} +} #endif /* !HAVE_GAI_STRERROR */ #ifndef HAVE_FREEADDRINFO @@ -128,9 +128,9 @@ addrinfo *malloc_ai(int port, u_long addr, const struct addrinfo *hints) ai = malloc(sizeof(*ai) + sizeof(struct sockaddr_in)); if (ai == NULL) return (NULL); - + memset(ai, '\0', sizeof(*ai) + sizeof(struct sockaddr_in)); - + ai->ai_addr = (struct sockaddr *)(ai + 1); /* XXX -- ssh doesn't use sa_len */ ai->ai_addrlen = sizeof(struct sockaddr_in); @@ -138,7 +138,7 @@ addrinfo *malloc_ai(int port, u_long addr, const struct addrinfo *hints) ((struct sockaddr_in *)(ai)->ai_addr)->sin_port = port; ((struct sockaddr_in *)(ai)->ai_addr)->sin_addr.s_addr = addr; - + /* XXX: the following is not generally correct, but does what we want */ if (hints->ai_socktype) ai->ai_socktype = hints->ai_socktype; @@ -152,7 +152,7 @@ addrinfo *malloc_ai(int port, u_long addr, const struct addrinfo *hints) } int -getaddrinfo(const char *hostname, const char *servname, +getaddrinfo(const char *hostname, const char *servname, const struct addrinfo *hints, struct addrinfo **res) { struct hostent *hp; @@ -183,29 +183,29 @@ getaddrinfo(const char *hostname, const char *servname, if (hostname && inet_aton(hostname, &in) != 0) addr = in.s_addr; *res = malloc_ai(port, addr, hints); - if (*res == NULL) + if (*res == NULL) return (EAI_MEMORY); return (0); } - + if (!hostname) { *res = malloc_ai(port, htonl(0x7f000001), hints); - if (*res == NULL) + if (*res == NULL) return (EAI_MEMORY); return (0); } - + if (inet_aton(hostname, &in)) { *res = malloc_ai(port, in.s_addr, hints); - if (*res == NULL) + if (*res == NULL) return (EAI_MEMORY); return (0); } - + /* Don't try DNS if AI_NUMERICHOST is set */ if (hints && hints->ai_flags & AI_NUMERICHOST) return (EAI_NONAME); - + hp = gethostbyname(hostname); if (hp && hp->h_name && hp->h_name[0] && hp->h_addr_list[0]) { struct addrinfo *cur, *prev; @@ -229,7 +229,7 @@ getaddrinfo(const char *hostname, const char *servname, } return (0); } - + return (EAI_NODATA); } #endif /* !HAVE_GETADDRINFO */ diff --git a/openbsd-compat/fake-rfc2553.h b/openbsd-compat/fake-rfc2553.h index 6426f7bf6441..f913617fe7d9 100644 --- a/openbsd-compat/fake-rfc2553.h +++ b/openbsd-compat/fake-rfc2553.h @@ -1,9 +1,7 @@ -/* $Id: fake-rfc2553.h,v 1.16 2008/07/14 11:37:37 djm Exp $ */ - /* * Copyright (C) 2000-2003 Damien Miller. All rights reserved. * Copyright (C) 1999 WIDE Project. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -15,7 +13,7 @@ * 3. Neither the name of the project nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE @@ -47,7 +45,7 @@ #endif /* - * First, socket and INET6 related definitions + * First, socket and INET6 related definitions */ #ifndef HAVE_STRUCT_SOCKADDR_STORAGE # define _SS_MAXSIZE 128 /* Implementation specific max size */ @@ -154,7 +152,7 @@ struct addrinfo { # undef getaddrinfo #endif #define getaddrinfo(a,b,c,d) (ssh_getaddrinfo(a,b,c,d)) -int getaddrinfo(const char *, const char *, +int getaddrinfo(const char *, const char *, const struct addrinfo *, struct addrinfo **); #endif /* !HAVE_GETADDRINFO */ @@ -170,7 +168,7 @@ void freeaddrinfo(struct addrinfo *); #ifndef HAVE_GETNAMEINFO #define getnameinfo(a,b,c,d,e,f,g) (ssh_getnameinfo(a,b,c,d,e,f,g)) -int getnameinfo(const struct sockaddr *, size_t, char *, size_t, +int getnameinfo(const struct sockaddr *, size_t, char *, size_t, char *, size_t, int); #endif /* !HAVE_GETNAMEINFO */ diff --git a/openbsd-compat/getcwd.c b/openbsd-compat/getcwd.c index 3edbb9cba3de..e4f7f5a3d0ae 100644 --- a/openbsd-compat/getcwd.c +++ b/openbsd-compat/getcwd.c @@ -1,4 +1,4 @@ -/* from OpenBSD: getcwd.c,v 1.14 2005/08/08 08:05:34 espie Exp */ +/* $OpenBSD: getcwd.c,v 1.14 2005/08/08 08:05:34 espie Exp */ /* * Copyright (c) 1989, 1991, 1993 * The Regents of the University of California. All rights reserved. diff --git a/openbsd-compat/getgrouplist.c b/openbsd-compat/getgrouplist.c index 3afcb9281bb3..3906cd62970c 100644 --- a/openbsd-compat/getgrouplist.c +++ b/openbsd-compat/getgrouplist.c @@ -1,4 +1,4 @@ -/* from OpenBSD: getgrouplist.c,v 1.12 2005/08/08 08:05:34 espie Exp */ +/* $OpenBSD: getgrouplist.c,v 1.12 2005/08/08 08:05:34 espie Exp */ /* * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. diff --git a/openbsd-compat/openbsd-compat.h b/openbsd-compat/openbsd-compat.h index 37d2064cd9ea..cff547745b88 100644 --- a/openbsd-compat/openbsd-compat.h +++ b/openbsd-compat/openbsd-compat.h @@ -1,5 +1,3 @@ -/* $Id: openbsd-compat.h,v 1.62 2014/09/30 23:43:08 djm Exp $ */ - /* * Copyright (c) 1999-2003 Damien Miller. All rights reserved. * Copyright (c) 2003 Ben Lindstrom. All rights reserved. @@ -64,7 +62,7 @@ void closefrom(int); #ifndef HAVE_GETCWD char *getcwd(char *pt, size_t size); -#endif +#endif #ifndef HAVE_REALLOCARRAY void *reallocarray(void *, size_t, size_t); @@ -87,14 +85,16 @@ int rresvport_af(int *alport, sa_family_t af); #endif #ifndef HAVE_STRLCPY -/* #include <sys/types.h> XXX Still needed? */ size_t strlcpy(char *dst, const char *src, size_t siz); #endif #ifndef HAVE_STRLCAT -/* #include <sys/types.h> XXX Still needed? */ size_t strlcat(char *dst, const char *src, size_t siz); -#endif +#endif + +#ifndef HAVE_STRCASESTR +char *strcasestr(const char *, const char *); +#endif #ifndef HAVE_SETENV int setenv(register const char *name, register const char *value, int rewrite); @@ -113,11 +113,11 @@ char *strptime(const char *buf, const char *fmt, struct tm *tm); int mkstemps(char *path, int slen); int mkstemp(char *path); char *mkdtemp(char *path); -#endif +#endif #ifndef HAVE_DAEMON int daemon(int nochdir, int noclose); -#endif +#endif #ifndef HAVE_DIRNAME char *dirname(const char *path); @@ -142,7 +142,7 @@ const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); #ifndef HAVE_INET_ATON int inet_aton(const char *cp, struct in_addr *addr); -#endif +#endif #ifndef HAVE_STRSEP char *strsep(char **stringp, const char *delim); @@ -154,7 +154,6 @@ void compat_init_setproctitle(int argc, char *argv[]); #endif #ifndef HAVE_GETGROUPLIST -/* #include <grp.h> XXXX Still needed ? */ int getgrouplist(const char *, gid_t, gid_t *, int *); #endif @@ -199,18 +198,16 @@ u_int32_t arc4random_uniform(u_int32_t); #ifndef HAVE_ASPRINTF int asprintf(char **, const char *, ...); -#endif +#endif #ifndef HAVE_OPENPTY # include <sys/ioctl.h> /* for struct winsize */ int openpty(int *, int *, char *, struct termios *, struct winsize *); #endif /* HAVE_OPENPTY */ -/* #include <sys/types.h> XXX needed? For size_t */ - #ifndef HAVE_SNPRINTF int snprintf(char *, size_t, SNPRINTF_CONST char *, ...); -#endif +#endif #ifndef HAVE_STRTOLL long long strtoll(const char *, char **, int); @@ -299,7 +296,6 @@ int bcrypt_pbkdf(const char *, size_t, const u_int8_t *, size_t, void explicit_bzero(void *p, size_t n); #endif -void *xmmap(size_t size); char *xcrypt(const char *password, const char *salt); char *shadow_pw(struct passwd *pw); diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c index 63a660c7a42a..259fccbec62e 100644 --- a/openbsd-compat/openssl-compat.c +++ b/openbsd-compat/openssl-compat.c @@ -1,5 +1,3 @@ -/* $Id: openssl-compat.c,v 1.19 2014/07/02 05:28:07 djm Exp $ */ - /* * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au> * @@ -55,7 +53,7 @@ ssh_compatible_openssl(long headerver, long libver) mask = 0xfffff00fL; /* major,minor,fix,status */ return (headerver & mask) == (libver & mask); } - + /* * For versions >= 1.0.0, major,minor,status must match and library * fix version must be equal to or newer than the header. diff --git a/openbsd-compat/openssl-compat.h b/openbsd-compat/openssl-compat.h index 8917551d314e..2ae42bacf233 100644 --- a/openbsd-compat/openssl-compat.h +++ b/openbsd-compat/openssl-compat.h @@ -1,5 +1,3 @@ -/* $Id: openssl-compat.h,v 1.31 2014/08/29 18:18:29 djm Exp $ */ - /* * Copyright (c) 2005 Darren Tucker <dtucker@zip.com.au> * @@ -71,6 +69,12 @@ void ssh_aes_ctr_iv(EVP_CIPHER_CTX *, int, u_char *, size_t); # endif #endif +#if defined(HAVE_EVP_RIPEMD160) +# if defined(OPENSSL_NO_RIPEMD) || defined(OPENSSL_NO_RMD160) +# undef HAVE_EVP_RIPEMD160 +# endif +#endif + /* * We overload some of the OpenSSL crypto functions with ssh_* equivalents * to automatically handle OpenSSL engine initialisation. diff --git a/openbsd-compat/port-aix.c b/openbsd-compat/port-aix.c index 8da367d48891..c2970c4db8c7 100644 --- a/openbsd-compat/port-aix.c +++ b/openbsd-compat/port-aix.c @@ -179,7 +179,7 @@ sys_auth_passwd(Authctxt *ctxt, const char *password) do { result = authenticate((char *)name, (char *)password, &reenter, &authmsg); - aix_remove_embedded_newlines(authmsg); + aix_remove_embedded_newlines(authmsg); debug3("AIX/authenticate result %d, authmsg %.100s", result, authmsg); } while (reenter); @@ -337,11 +337,11 @@ aix_setauthdb(const char *user) debug3("%s: Could not open userdb to read", __func__); return; } - + if (getuserattr((char *)user, S_REGISTRY, ®istry, SEC_CHAR) == 0) { if (setauthdb(registry, old_registry) == 0) debug3("AIX/setauthdb set registry '%s'", registry); - else + else debug3("AIX/setauthdb set registry '%s' failed: %s", registry, strerror(errno)); } else diff --git a/openbsd-compat/port-aix.h b/openbsd-compat/port-aix.h index 53e4e88a0c37..9c0a4dd3ea62 100644 --- a/openbsd-compat/port-aix.h +++ b/openbsd-compat/port-aix.h @@ -1,5 +1,3 @@ -/* $Id: port-aix.h,v 1.32 2009/12/20 23:49:22 dtucker Exp $ */ - /* * * Copyright (c) 2001 Gert Doering. All rights reserved. diff --git a/openbsd-compat/port-irix.c b/openbsd-compat/port-irix.c index ba751a5383f3..525b029092fb 100644 --- a/openbsd-compat/port-irix.c +++ b/openbsd-compat/port-irix.c @@ -47,42 +47,42 @@ void irix_setusercontext(struct passwd *pw) { #ifdef WITH_IRIX_PROJECT - prid_t projid; + prid_t projid; #endif #ifdef WITH_IRIX_JOBS - jid_t jid = 0; + jid_t jid = 0; #elif defined(WITH_IRIX_ARRAY) - int jid = 0; + int jid = 0; #endif #ifdef WITH_IRIX_JOBS - jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive"); - if (jid == -1) - fatal("Failed to create job container: %.100s", - strerror(errno)); + jid = jlimit_startjob(pw->pw_name, pw->pw_uid, "interactive"); + if (jid == -1) + fatal("Failed to create job container: %.100s", + strerror(errno)); #endif /* WITH_IRIX_JOBS */ #ifdef WITH_IRIX_ARRAY - /* initialize array session */ - if (jid == 0 && newarraysess() != 0) - fatal("Failed to set up new array session: %.100s", - strerror(errno)); + /* initialize array session */ + if (jid == 0 && newarraysess() != 0) + fatal("Failed to set up new array session: %.100s", + strerror(errno)); #endif /* WITH_IRIX_ARRAY */ #ifdef WITH_IRIX_PROJECT - /* initialize irix project info */ - if ((projid = getdfltprojuser(pw->pw_name)) == -1) { - debug("Failed to get project id, using projid 0"); - projid = 0; - } - if (setprid(projid)) - fatal("Failed to initialize project %d for %s: %.100s", - (int)projid, pw->pw_name, strerror(errno)); + /* initialize irix project info */ + if ((projid = getdfltprojuser(pw->pw_name)) == -1) { + debug("Failed to get project id, using projid 0"); + projid = 0; + } + if (setprid(projid)) + fatal("Failed to initialize project %d for %s: %.100s", + (int)projid, pw->pw_name, strerror(errno)); #endif /* WITH_IRIX_PROJECT */ #ifdef WITH_IRIX_AUDIT - if (sysconf(_SC_AUDIT)) { - debug("Setting sat id to %d", (int) pw->pw_uid); - if (satsetid(pw->pw_uid)) - debug("error setting satid: %.100s", strerror(errno)); - } + if (sysconf(_SC_AUDIT)) { + debug("Setting sat id to %d", (int) pw->pw_uid); + if (satsetid(pw->pw_uid)) + debug("error setting satid: %.100s", strerror(errno)); + } #endif /* WITH_IRIX_AUDIT */ } diff --git a/openbsd-compat/port-irix.h b/openbsd-compat/port-irix.h index 67c486307841..bc8cc44ac5a4 100644 --- a/openbsd-compat/port-irix.h +++ b/openbsd-compat/port-irix.h @@ -1,5 +1,3 @@ -/* $Id: port-irix.h,v 1.4 2003/08/29 16:59:52 mouring Exp $ */ - /* * Copyright (c) 2000 Denis Parker. All rights reserved. * Copyright (c) 2000 Michael Stone. All rights reserved. diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c index f36999d7acbd..e4c5d1b7c089 100644 --- a/openbsd-compat/port-linux.c +++ b/openbsd-compat/port-linux.c @@ -1,5 +1,3 @@ -/* $Id: port-linux.c,v 1.18 2013/06/01 22:07:32 dtucker Exp $ */ - /* * Copyright (c) 2005 Daniel Walsh <dwalsh@redhat.com> * Copyright (c) 2006 Damien Miller <djm@openbsd.org> diff --git a/openbsd-compat/port-linux.h b/openbsd-compat/port-linux.h index e3d1004aadd9..3c22a854dbce 100644 --- a/openbsd-compat/port-linux.h +++ b/openbsd-compat/port-linux.h @@ -1,5 +1,3 @@ -/* $Id: port-linux.h,v 1.5 2011/01/25 01:16:18 djm Exp $ */ - /* * Copyright (c) 2006 Damien Miller <djm@openbsd.org> * diff --git a/openbsd-compat/port-solaris.c b/openbsd-compat/port-solaris.c index e36e412d7325..0e89dc3261d7 100644 --- a/openbsd-compat/port-solaris.c +++ b/openbsd-compat/port-solaris.c @@ -1,5 +1,3 @@ -/* $Id: port-solaris.c,v 1.4 2010/11/05 01:03:05 dtucker Exp $ */ - /* * Copyright (c) 2006 Chad Mynhier. * @@ -215,7 +213,7 @@ solaris_set_default_project(struct passwd *pw) /* get default project, if we fail just return gracefully */ if ((defaultproject = getdefaultproj(pw->pw_name, &tempproject, &buf, - sizeof(buf))) > 0) { + sizeof(buf))) != NULL) { /* set default project */ if (setproject(defaultproject->pj_name, pw->pw_name, TASK_NORMAL) != 0) diff --git a/openbsd-compat/port-solaris.h b/openbsd-compat/port-solaris.h index a7cb5eb30e9f..dde1a5b8bd37 100644 --- a/openbsd-compat/port-solaris.h +++ b/openbsd-compat/port-solaris.h @@ -1,5 +1,3 @@ -/* $Id: port-solaris.h,v 1.2 2010/11/05 01:03:05 dtucker Exp $ */ - /* * Copyright (c) 2006 Chad Mynhier. * diff --git a/openbsd-compat/port-tun.c b/openbsd-compat/port-tun.c index 49e7b4d99d1a..a444adf1d593 100644 --- a/openbsd-compat/port-tun.c +++ b/openbsd-compat/port-tun.c @@ -68,7 +68,7 @@ sys_tun_open(int tun, int mode) return (-1); } - bzero(&ifr, sizeof(ifr)); + bzero(&ifr, sizeof(ifr)); if (mode == SSH_TUNMODE_ETHERNET) { ifr.ifr_flags = IFF_TAP; diff --git a/openbsd-compat/readpassphrase.c b/openbsd-compat/readpassphrase.c index d63cdf2f0e33..24aed6e46778 100644 --- a/openbsd-compat/readpassphrase.c +++ b/openbsd-compat/readpassphrase.c @@ -1,7 +1,8 @@ -/* $OpenBSD: readpassphrase.c,v 1.22 2010/01/13 10:20:54 dtucker Exp $ */ +/* $OpenBSD: readpassphrase.c,v 1.26 2016/10/18 12:47:18 millert Exp $ */ /* - * Copyright (c) 2000-2002, 2007 Todd C. Miller <Todd.Miller@courtesan.com> + * Copyright (c) 2000-2002, 2007, 2010 + * Todd C. Miller <Todd.Miller@courtesan.com> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -35,10 +36,9 @@ #include <string.h> #include <unistd.h> -#ifdef TCSASOFT -# define _T_FLUSH (TCSAFLUSH|TCSASOFT) -#else -# define _T_FLUSH (TCSAFLUSH) +#ifndef TCSASOFT +/* If we don't have TCSASOFT define it so that ORing it it below is a no-op. */ +# define TCSASOFT 0 #endif /* SunOS 4.x which lacks _POSIX_VDISABLE, but has VDISABLE */ @@ -95,6 +95,27 @@ restart: } /* + * Turn off echo if possible. + * If we are using a tty but are not the foreground pgrp this will + * generate SIGTTOU, so do it *before* installing the signal handlers. + */ + if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) { + memcpy(&term, &oterm, sizeof(term)); + if (!(flags & RPP_ECHO_ON)) + term.c_lflag &= ~(ECHO | ECHONL); +#ifdef VSTATUS + if (term.c_cc[VSTATUS] != _POSIX_VDISABLE) + term.c_cc[VSTATUS] = _POSIX_VDISABLE; +#endif + (void)tcsetattr(input, TCSAFLUSH|TCSASOFT, &term); + } else { + memset(&term, 0, sizeof(term)); + term.c_lflag |= ECHO; + memset(&oterm, 0, sizeof(oterm)); + oterm.c_lflag |= ECHO; + } + + /* * Catch signals that would otherwise cause the user to end * up with echo turned off in the shell. Don't worry about * things like SIGXCPU and SIGVTALRM for now. @@ -112,53 +133,37 @@ restart: (void)sigaction(SIGTTIN, &sa, &savettin); (void)sigaction(SIGTTOU, &sa, &savettou); - /* Turn off echo if possible. */ - if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) { - memcpy(&term, &oterm, sizeof(term)); - if (!(flags & RPP_ECHO_ON)) - term.c_lflag &= ~(ECHO | ECHONL); -#ifdef VSTATUS - if (term.c_cc[VSTATUS] != _POSIX_VDISABLE) - term.c_cc[VSTATUS] = _POSIX_VDISABLE; -#endif - (void)tcsetattr(input, _T_FLUSH, &term); - } else { - memset(&term, 0, sizeof(term)); - term.c_lflag |= ECHO; - memset(&oterm, 0, sizeof(oterm)); - oterm.c_lflag |= ECHO; - } - - /* No I/O if we are already backgrounded. */ - if (signo[SIGTTOU] != 1 && signo[SIGTTIN] != 1) { - if (!(flags & RPP_STDIN)) - (void)write(output, prompt, strlen(prompt)); - end = buf + bufsiz - 1; - p = buf; - while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') { - if (p < end) { - if ((flags & RPP_SEVENBIT)) - ch &= 0x7f; - if (isalpha(ch)) { - if ((flags & RPP_FORCELOWER)) - ch = (char)tolower(ch); - if ((flags & RPP_FORCEUPPER)) - ch = (char)toupper(ch); - } - *p++ = ch; + if (!(flags & RPP_STDIN)) + (void)write(output, prompt, strlen(prompt)); + end = buf + bufsiz - 1; + p = buf; + while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') { + if (p < end) { + if ((flags & RPP_SEVENBIT)) + ch &= 0x7f; + if (isalpha((unsigned char)ch)) { + if ((flags & RPP_FORCELOWER)) + ch = (char)tolower((unsigned char)ch); + if ((flags & RPP_FORCEUPPER)) + ch = (char)toupper((unsigned char)ch); } + *p++ = ch; } - *p = '\0'; - save_errno = errno; - if (!(term.c_lflag & ECHO)) - (void)write(output, "\n", 1); } + *p = '\0'; + save_errno = errno; + if (!(term.c_lflag & ECHO)) + (void)write(output, "\n", 1); /* Restore old terminal settings and signals. */ if (memcmp(&term, &oterm, sizeof(term)) != 0) { - while (tcsetattr(input, _T_FLUSH, &oterm) == -1 && - errno == EINTR) + const int sigttou = signo[SIGTTOU]; + + /* Ignore SIGTTOU generated when we are not the fg pgrp. */ + while (tcsetattr(input, TCSAFLUSH|TCSASOFT, &oterm) == -1 && + errno == EINTR && !signo[SIGTTOU]) continue; + signo[SIGTTOU] = sigttou; } (void)sigaction(SIGALRM, &savealrm, NULL); (void)sigaction(SIGHUP, &savehup, NULL); @@ -194,6 +199,7 @@ restart: errno = save_errno; return(nr == -1 ? NULL : buf); } +DEF_WEAK(readpassphrase); #if 0 char * diff --git a/openbsd-compat/setproctitle.c b/openbsd-compat/setproctitle.c index 9f7ca14c207d..2b15c6e00f8b 100644 --- a/openbsd-compat/setproctitle.c +++ b/openbsd-compat/setproctitle.c @@ -76,7 +76,7 @@ compat_init_setproctitle(int argc, char *argv[]) /* * NB: This assumes that argv has already been copied out of the - * way. This is true for sshd, but may not be true for other + * way. This is true for sshd, but may not be true for other * programs. Beware. */ @@ -92,7 +92,7 @@ compat_init_setproctitle(int argc, char *argv[]) } /* - * Find the last argv string or environment variable within + * Find the last argv string or environment variable within * our process memory area. */ for (i = 0; i < argc; i++) { @@ -108,8 +108,8 @@ compat_init_setproctitle(int argc, char *argv[]) argv_start = argv[0]; argv_env_len = lastargv - argv[0] - 1; - /* - * Copy environment + /* + * Copy environment * XXX - will truncate env on strdup fail */ for (i = 0; envp[i] != NULL; i++) @@ -156,7 +156,7 @@ setproctitle(const char *fmt, ...) pst.pst_command = ptitle; pstat(PSTAT_SETCMD, pst, strlen(ptitle), 0, 0); #elif SPT_TYPE == SPT_REUSEARGV -/* debug("setproctitle: copy \"%s\" into len %d", +/* debug("setproctitle: copy \"%s\" into len %d", buf, argv_env_len); */ len = strlcpy(argv_start, ptitle, argv_env_len); for(; len < argv_env_len; len++) diff --git a/openbsd-compat/sha2.c b/openbsd-compat/sha2.c index 737935d46383..a22099bbe970 100644 --- a/openbsd-compat/sha2.c +++ b/openbsd-compat/sha2.c @@ -1,4 +1,4 @@ -/* from OpenBSD: sha2.c,v 1.11 2005/08/08 08:05:35 espie Exp */ +/* $OpenBSD: sha2.c,v 1.11 2005/08/08 08:05:35 espie Exp */ /* * FILE: sha2.c diff --git a/openbsd-compat/sha2.h b/openbsd-compat/sha2.h index c8bfc3cd13f0..c6e6c97a5397 100644 --- a/openbsd-compat/sha2.h +++ b/openbsd-compat/sha2.h @@ -1,4 +1,4 @@ -/* OpenBSD: sha2.h,v 1.6 2004/06/22 01:57:30 jfb Exp */ +/* $OpenBSD: sha2.h,v 1.6 2004/06/22 01:57:30 jfb Exp */ /* * FILE: sha2.h diff --git a/openbsd-compat/strcasestr.c b/openbsd-compat/strcasestr.c new file mode 100644 index 000000000000..4c4d1475a4b0 --- /dev/null +++ b/openbsd-compat/strcasestr.c @@ -0,0 +1,69 @@ +/* $OpenBSD: strcasestr.c,v 1.4 2015/08/31 02:53:57 guenther Exp $ */ +/* $NetBSD: strcasestr.c,v 1.2 2005/02/09 21:35:47 kleink Exp $ */ + +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. + * + * 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. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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. + */ + +/* OPENBSD ORIGINAL: lib/libc/string/strcasestr.c */ + +#include "includes.h" + +#ifndef HAVE_STRCASESTR + +#include <ctype.h> +#include <string.h> + +/* + * Find the first occurrence of find in s, ignore case. + */ +char * +strcasestr(const char *s, const char *find) +{ + char c, sc; + size_t len; + + if ((c = *find++) != 0) { + c = (char)tolower((unsigned char)c); + len = strlen(find); + do { + do { + if ((sc = *s++) == 0) + return (NULL); + } while ((char)tolower((unsigned char)sc) != c); + } while (strncasecmp(s, find, len) != 0); + s--; + } + return ((char *)s); +} +DEF_WEAK(strcasestr); + +#endif diff --git a/openbsd-compat/vis.c b/openbsd-compat/vis.c index 3cef6bafdf12..0e04ed025dde 100644 --- a/openbsd-compat/vis.c +++ b/openbsd-compat/vis.c @@ -33,12 +33,6 @@ #include "includes.h" #if !defined(HAVE_STRNVIS) || defined(BROKEN_STRNVIS) -/* - * We want these to override in the BROKEN_STRNVIS case. TO avoid future sync - * problems no-op out the weak symbol definition rather than remove it. - */ -#define DEF_WEAK(x) - #include <sys/types.h> #include <errno.h> #include <ctype.h> diff --git a/openbsd-compat/xcrypt.c b/openbsd-compat/xcrypt.c index cf6a9b99f38d..c9c6283cccec 100644 --- a/openbsd-compat/xcrypt.c +++ b/openbsd-compat/xcrypt.c @@ -42,7 +42,7 @@ # include <sys/security.h> # include <sys/audit.h> # include <prot.h> -# endif +# endif # if defined(HAVE_SHADOW_H) && !defined(DISABLE_SHADOW) # include <shadow.h> @@ -108,20 +108,20 @@ xcrypt(const char *password, const char *salt) salt = pick_salt(); # ifdef HAVE_MD5_PASSWORDS - if (is_md5_salt(salt)) - crypted = md5_crypt(password, salt); - else - crypted = crypt(password, salt); + if (is_md5_salt(salt)) + crypted = md5_crypt(password, salt); + else + crypted = crypt(password, salt); # elif defined(__hpux) && !defined(HAVE_SECUREWARE) if (iscomsec()) - crypted = bigcrypt(password, salt); - else - crypted = crypt(password, salt); + crypted = bigcrypt(password, salt); + else + crypted = crypt(password, salt); # elif defined(HAVE_SECUREWARE) - crypted = bigcrypt(password, salt); + crypted = bigcrypt(password, salt); # else - crypted = crypt(password, salt); -# endif + crypted = crypt(password, salt); +# endif return crypted; } diff --git a/openbsd-compat/xmmap.c b/openbsd-compat/xmmap.c deleted file mode 100644 index 04c6babc2864..000000000000 --- a/openbsd-compat/xmmap.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2002 Tim Rice. All rights reserved. - * MAP_FAILED code by Solar Designer. - * - * 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. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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. - */ - -/* $Id: xmmap.c,v 1.15 2009/02/16 04:21:40 djm Exp $ */ - -#include "includes.h" - -#include <sys/types.h> -#ifdef HAVE_SYS_MMAN_H -#include <sys/mman.h> -#endif -#include <sys/stat.h> - -#ifdef HAVE_FCNTL_H -# include <fcntl.h> -#endif -#include <errno.h> -#include <stdarg.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> - -#include "log.h" - -void * -xmmap(size_t size) -{ -#ifdef HAVE_MMAP - void *address; - -# ifdef MAP_ANON - address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_ANON|MAP_SHARED, - -1, (off_t)0); -# else - address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_SHARED, - open("/dev/zero", O_RDWR), (off_t)0); -# endif - -#define MM_SWAP_TEMPLATE "/var/run/sshd.mm.XXXXXXXX" - if (address == (void *)MAP_FAILED) { - char tmpname[sizeof(MM_SWAP_TEMPLATE)] = MM_SWAP_TEMPLATE; - int tmpfd; - mode_t old_umask; - - old_umask = umask(0177); - tmpfd = mkstemp(tmpname); - umask(old_umask); - if (tmpfd == -1) - fatal("mkstemp(\"%s\"): %s", - MM_SWAP_TEMPLATE, strerror(errno)); - unlink(tmpname); - if (ftruncate(tmpfd, size) != 0) - fatal("%s: ftruncate: %s", __func__, strerror(errno)); - address = mmap(NULL, size, PROT_WRITE|PROT_READ, MAP_SHARED, - tmpfd, (off_t)0); - close(tmpfd); - } - - return (address); -#else - fatal("%s: UsePrivilegeSeparation=yes and Compression=yes not supported", - __func__); -#endif /* HAVE_MMAP */ - -} - |