libssh: remove some unused files
authorRobin Hahling <robin.hahling@gw-computing.net>
Sun, 25 Jan 2015 19:49:14 +0000 (20:49 +0100)
committerSascha Wildner <saw@online.de>
Sun, 25 Jan 2015 20:02:26 +0000 (21:02 +0100)
crypto/openssh/README.DELETED
crypto/openssh/digest-libc.c [deleted file]
crypto/openssh/openbsd-compat/arc4random.c [deleted file]
crypto/openssh/openbsd-compat/bsd-setres_id.c [deleted file]
crypto/openssh/openbsd-compat/chacha_private.h [deleted file]
crypto/openssh/openbsd-compat/getopt.h [deleted file]
crypto/openssh/openbsd-compat/getopt_long.c [deleted file]
crypto/openssh/openbsd-compat/kludge-fd_set.c [deleted file]
crypto/openssh/openbsd-compat/strtoull.c [deleted file]
crypto/openssh/sandbox-capsicum.c [deleted file]

index b185d7d..28190c5 100644 (file)
@@ -15,6 +15,7 @@ config.sub
 configure
 configure.ac
 contrib/
+digest-libc.c
 fixalgorithms
 fixpaths
 fixprogs
@@ -26,6 +27,7 @@ moduli.0
 nchan.ms
 nchan2.ms
 openbsd-compat/Makefile.in
+openbsd-compat/arc4random.c
 openbsd-compat/base64.c
 openbsd-compat/basename.c
 openbsd-compat/bindresvport.c
@@ -37,18 +39,23 @@ openbsd-compat/bsd-getpeereid.c
 openbsd-compat/bsd-nextstep.c
 openbsd-compat/bsd-openpty.c
 openbsd-compat/bsd-poll.c
+openbsd-compat/bsd-setres_id.c
 openbsd-compat/bsd-snprintf.c
 openbsd-compat/bsd-statvfs.c
 openbsd-compat/bsd-waitpid.c
+openbsd-compat/chacha_private.h
 openbsd-compat/daemon.c
 openbsd-compat/dirname.c
 openbsd-compat/fake-rfc2553.c
 openbsd-compat/getcwd.c
 openbsd-compat/getgrouplist.c
+openbsd-compat/getopt.h
+openbsd-compat/getopt_long.c
 openbsd-compat/getrrsetbyname-ldns.c
 openbsd-compat/inet_aton.c
 openbsd-compat/inet_ntoa.c
 openbsd-compat/inet_ntop.c
+openbsd-compat/kludge-fd_set.c
 openbsd-compat/mktemp.c
 openbsd-compat/port-aix.c
 openbsd-compat/port-irix.c
@@ -73,12 +80,14 @@ openbsd-compat/strsep.c
 openbsd-compat/strtoll.c
 openbsd-compat/strtonum.c
 openbsd-compat/strtoul.c
+openbsd-compat/strtoull.c
 openbsd-compat/vis.c
 openbsd-compat/vis.h
 openbsd-compat/xcrypt.c
 openssh.xml.in
 opensshd.init.in
 regress/
+sandbox-capsicum.c
 sandbox-darwin.c
 sandbox-null.c
 sandbox-seccomp-filter.c
diff --git a/crypto/openssh/digest-libc.c b/crypto/openssh/digest-libc.c
deleted file mode 100644 (file)
index 1b4423a..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-/* $OpenBSD: digest-libc.c,v 1.3 2014/06/24 01:13:21 djm Exp $ */
-/*
- * Copyright (c) 2013 Damien Miller <djm@mindrot.org>
- * Copyright (c) 2014 Markus Friedl.  All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "includes.h"
-
-#include <sys/types.h>
-#include <limits.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <md5.h>
-#include <rmd160.h>
-#include <sha1.h>
-#include <sha2.h>
-
-#include "ssherr.h"
-#include "sshbuf.h"
-#include "digest.h"
-
-typedef void md_init_fn(void *mdctx);
-typedef void md_update_fn(void *mdctx, const u_int8_t *m, size_t mlen);
-typedef void md_final_fn(u_int8_t[], void *mdctx);
-
-struct ssh_digest_ctx {
-       int alg;
-       void *mdctx;
-};
-
-struct ssh_digest {
-       int id;
-       const char *name;
-       size_t block_len;
-       size_t digest_len;
-       size_t ctx_len;
-       md_init_fn *md_init;
-       md_update_fn *md_update;
-       md_final_fn *md_final;
-};
-
-/* NB. Indexed directly by algorithm number */
-const struct ssh_digest digests[SSH_DIGEST_MAX] = {
-       {
-               SSH_DIGEST_MD5,
-               "MD5",
-               MD5_BLOCK_LENGTH,
-               MD5_DIGEST_LENGTH,
-               sizeof(MD5_CTX),
-               (md_init_fn *) MD5Init,
-               (md_update_fn *) MD5Update,
-               (md_final_fn *) MD5Final
-       },
-       {
-               SSH_DIGEST_RIPEMD160,
-               "RIPEMD160",
-               RMD160_BLOCK_LENGTH,
-               RMD160_DIGEST_LENGTH,
-               sizeof(RMD160_CTX),
-               (md_init_fn *) RMD160Init,
-               (md_update_fn *) RMD160Update,
-               (md_final_fn *) RMD160Final
-       },
-       {
-               SSH_DIGEST_SHA1,
-               "SHA1",
-               SHA1_BLOCK_LENGTH,
-               SHA1_DIGEST_LENGTH,
-               sizeof(SHA1_CTX),
-               (md_init_fn *) SHA1Init,
-               (md_update_fn *) SHA1Update,
-               (md_final_fn *) SHA1Final
-       },
-       {
-               SSH_DIGEST_SHA256,
-               "SHA256",
-               SHA256_BLOCK_LENGTH,
-               SHA256_DIGEST_LENGTH,
-               sizeof(SHA2_CTX),
-               (md_init_fn *) SHA256Init,
-               (md_update_fn *) SHA256Update,
-               (md_final_fn *) SHA256Final
-       },
-       {
-               SSH_DIGEST_SHA384,
-               "SHA384",
-               SHA384_BLOCK_LENGTH,
-               SHA384_DIGEST_LENGTH,
-               sizeof(SHA2_CTX),
-               (md_init_fn *) SHA384Init,
-               (md_update_fn *) SHA384Update,
-               (md_final_fn *) SHA384Final
-       },
-       {
-               SSH_DIGEST_SHA512,
-               "SHA512",
-               SHA512_BLOCK_LENGTH,
-               SHA512_DIGEST_LENGTH,
-               sizeof(SHA2_CTX),
-               (md_init_fn *) SHA512Init,
-               (md_update_fn *) SHA512Update,
-               (md_final_fn *) SHA512Final
-       }
-};
-
-static const struct ssh_digest *
-ssh_digest_by_alg(int alg)
-{
-       if (alg < 0 || alg >= SSH_DIGEST_MAX)
-               return NULL;
-       if (digests[alg].id != alg) /* sanity */
-               return NULL;
-       return &(digests[alg]);
-}
-
-size_t
-ssh_digest_bytes(int alg)
-{
-       const struct ssh_digest *digest = ssh_digest_by_alg(alg);
-
-       return digest == NULL ? 0 : digest->digest_len;
-}
-
-size_t
-ssh_digest_blocksize(struct ssh_digest_ctx *ctx)
-{
-       const struct ssh_digest *digest = ssh_digest_by_alg(ctx->alg);
-
-       return digest == NULL ? 0 : digest->block_len;
-}
-
-struct ssh_digest_ctx *
-ssh_digest_start(int alg)
-{
-       const struct ssh_digest *digest = ssh_digest_by_alg(alg);
-       struct ssh_digest_ctx *ret;
-
-       if (digest == NULL || (ret = calloc(1, sizeof(ret))) == NULL)
-               return NULL;
-       if ((ret->mdctx = calloc(1, digest->ctx_len)) == NULL) {
-               free(ret);
-               return NULL;
-       }
-       ret->alg = alg;
-       digest->md_init(ret->mdctx);
-       return ret;
-}
-
-int
-ssh_digest_copy_state(struct ssh_digest_ctx *from, struct ssh_digest_ctx *to)
-{
-       const struct ssh_digest *digest = ssh_digest_by_alg(from->alg);
-
-       if (digest == NULL || from->alg != to->alg)
-               return SSH_ERR_INVALID_ARGUMENT;
-       memcpy(to->mdctx, from->mdctx, digest->ctx_len);
-       return 0;
-}
-
-int
-ssh_digest_update(struct ssh_digest_ctx *ctx, const void *m, size_t mlen)
-{
-       const struct ssh_digest *digest = ssh_digest_by_alg(ctx->alg);
-
-       if (digest == NULL)
-               return SSH_ERR_INVALID_ARGUMENT;
-       digest->md_update(ctx->mdctx, m, mlen);
-       return 0;
-}
-
-int
-ssh_digest_update_buffer(struct ssh_digest_ctx *ctx, const struct sshbuf *b)
-{
-       return ssh_digest_update(ctx, sshbuf_ptr(b), sshbuf_len(b));
-}
-
-int
-ssh_digest_final(struct ssh_digest_ctx *ctx, u_char *d, size_t dlen)
-{
-       const struct ssh_digest *digest = ssh_digest_by_alg(ctx->alg);
-
-       if (digest == NULL)
-               return SSH_ERR_INVALID_ARGUMENT;
-       if (dlen > UINT_MAX)
-               return SSH_ERR_INVALID_ARGUMENT;
-       if (dlen < digest->digest_len) /* No truncation allowed */
-               return SSH_ERR_INVALID_ARGUMENT;
-       digest->md_final(d, ctx->mdctx);
-       return 0;
-}
-
-void
-ssh_digest_free(struct ssh_digest_ctx *ctx)
-{
-       const struct ssh_digest *digest;
-
-       if (ctx != NULL) {
-               digest = ssh_digest_by_alg(ctx->alg);
-               if (digest) {
-                       explicit_bzero(ctx->mdctx, digest->ctx_len);
-                       free(ctx->mdctx);
-                       explicit_bzero(ctx, sizeof(*ctx));
-                       free(ctx);
-               }
-       }
-}
-
-int
-ssh_digest_memory(int alg, const void *m, size_t mlen, u_char *d, size_t dlen)
-{
-       struct ssh_digest_ctx *ctx = ssh_digest_start(alg);
-
-       if (ctx == NULL)
-               return SSH_ERR_INVALID_ARGUMENT;
-       if (ssh_digest_update(ctx, m, mlen) != 0 ||
-           ssh_digest_final(ctx, d, dlen) != 0)
-               return SSH_ERR_INVALID_ARGUMENT;
-       ssh_digest_free(ctx);
-       return 0;
-}
-
-int
-ssh_digest_buffer(int alg, const struct sshbuf *b, u_char *d, size_t dlen)
-{
-       return ssh_digest_memory(alg, sshbuf_ptr(b), sshbuf_len(b), d, dlen);
-}
diff --git a/crypto/openssh/openbsd-compat/arc4random.c b/crypto/openssh/openbsd-compat/arc4random.c
deleted file mode 100644 (file)
index 09dbfda..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/* OPENBSD ORIGINAL: lib/libc/crypto/arc4random.c */
-
-/*     $OpenBSD: arc4random.c,v 1.25 2013/10/01 18:34:57 markus Exp $  */
-
-/*
- * Copyright (c) 1996, David Mazieres <dm@uun.org>
- * Copyright (c) 2008, Damien Miller <djm@openbsd.org>
- * Copyright (c) 2013, Markus Friedl <markus@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * ChaCha based random number generator for OpenBSD.
- */
-
-#include "includes.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-
-#ifndef HAVE_ARC4RANDOM
-
-#include <openssl/rand.h>
-#include <openssl/err.h>
-
-#include "log.h"
-
-#define KEYSTREAM_ONLY
-#include "chacha_private.h"
-
-#ifdef __GNUC__
-#define inline __inline
-#else                          /* !__GNUC__ */
-#define inline
-#endif                         /* !__GNUC__ */
-
-/* OpenSSH isn't multithreaded */
-#define _ARC4_LOCK()
-#define _ARC4_UNLOCK()
-
-#define KEYSZ  32
-#define IVSZ   8
-#define BLOCKSZ        64
-#define RSBUFSZ        (16*BLOCKSZ)
-static int rs_initialized;
-static pid_t rs_stir_pid;
-static chacha_ctx rs;          /* chacha context for random keystream */
-static u_char rs_buf[RSBUFSZ]; /* keystream blocks */
-static size_t rs_have;         /* valid bytes at end of rs_buf */
-static size_t rs_count;                /* bytes till reseed */
-
-static inline void _rs_rekey(u_char *dat, size_t datlen);
-
-static inline void
-_rs_init(u_char *buf, size_t n)
-{
-       if (n < KEYSZ + IVSZ)
-               return;
-       chacha_keysetup(&rs, buf, KEYSZ * 8, 0);
-       chacha_ivsetup(&rs, buf + KEYSZ);
-}
-
-static void
-_rs_stir(void)
-{
-       u_char rnd[KEYSZ + IVSZ];
-
-       if (RAND_bytes(rnd, sizeof(rnd)) <= 0)
-               fatal("Couldn't obtain random bytes (error %ld)",
-                   ERR_get_error());
-
-       if (!rs_initialized) {
-               rs_initialized = 1;
-               _rs_init(rnd, sizeof(rnd));
-       } else
-               _rs_rekey(rnd, sizeof(rnd));
-       explicit_bzero(rnd, sizeof(rnd));
-
-       /* invalidate rs_buf */
-       rs_have = 0;
-       memset(rs_buf, 0, RSBUFSZ);
-
-       rs_count = 1600000;
-}
-
-static inline void
-_rs_stir_if_needed(size_t len)
-{
-       pid_t pid = getpid();
-
-       if (rs_count <= len || !rs_initialized || rs_stir_pid != pid) {
-               rs_stir_pid = pid;
-               _rs_stir();
-       } else
-               rs_count -= len;
-}
-
-static inline void
-_rs_rekey(u_char *dat, size_t datlen)
-{
-#ifndef KEYSTREAM_ONLY
-       memset(rs_buf, 0,RSBUFSZ);
-#endif
-       /* fill rs_buf with the keystream */
-       chacha_encrypt_bytes(&rs, rs_buf, rs_buf, RSBUFSZ);
-       /* mix in optional user provided data */
-       if (dat) {
-               size_t i, m;
-
-               m = MIN(datlen, KEYSZ + IVSZ);
-               for (i = 0; i < m; i++)
-                       rs_buf[i] ^= dat[i];
-       }
-       /* immediately reinit for backtracking resistance */
-       _rs_init(rs_buf, KEYSZ + IVSZ);
-       memset(rs_buf, 0, KEYSZ + IVSZ);
-       rs_have = RSBUFSZ - KEYSZ - IVSZ;
-}
-
-static inline void
-_rs_random_buf(void *_buf, size_t n)
-{
-       u_char *buf = (u_char *)_buf;
-       size_t m;
-
-       _rs_stir_if_needed(n);
-       while (n > 0) {
-               if (rs_have > 0) {
-                       m = MIN(n, rs_have);
-                       memcpy(buf, rs_buf + RSBUFSZ - rs_have, m);
-                       memset(rs_buf + RSBUFSZ - rs_have, 0, m);
-                       buf += m;
-                       n -= m;
-                       rs_have -= m;
-               }
-               if (rs_have == 0)
-                       _rs_rekey(NULL, 0);
-       }
-}
-
-static inline void
-_rs_random_u32(u_int32_t *val)
-{
-       _rs_stir_if_needed(sizeof(*val));
-       if (rs_have < sizeof(*val))
-               _rs_rekey(NULL, 0);
-       memcpy(val, rs_buf + RSBUFSZ - rs_have, sizeof(*val));
-       memset(rs_buf + RSBUFSZ - rs_have, 0, sizeof(*val));
-       rs_have -= sizeof(*val);
-       return;
-}
-
-void
-arc4random_stir(void)
-{
-       _ARC4_LOCK();
-       _rs_stir();
-       _ARC4_UNLOCK();
-}
-
-void
-arc4random_addrandom(u_char *dat, int datlen)
-{
-       int m;
-
-       _ARC4_LOCK();
-       if (!rs_initialized)
-               _rs_stir();
-       while (datlen > 0) {
-               m = MIN(datlen, KEYSZ + IVSZ);
-               _rs_rekey(dat, m);
-               dat += m;
-               datlen -= m;
-       }
-       _ARC4_UNLOCK();
-}
-
-u_int32_t
-arc4random(void)
-{
-       u_int32_t val;
-
-       _ARC4_LOCK();
-       _rs_random_u32(&val);
-       _ARC4_UNLOCK();
-       return val;
-}
-
-/*
- * If we are providing arc4random, then we can provide a more efficient 
- * arc4random_buf().
- */
-# ifndef HAVE_ARC4RANDOM_BUF
-void
-arc4random_buf(void *buf, size_t n)
-{
-       _ARC4_LOCK();
-       _rs_random_buf(buf, n);
-       _ARC4_UNLOCK();
-}
-# endif /* !HAVE_ARC4RANDOM_BUF */
-#endif /* !HAVE_ARC4RANDOM */
-
-/* arc4random_buf() that uses platform arc4random() */
-#if !defined(HAVE_ARC4RANDOM_BUF) && defined(HAVE_ARC4RANDOM)
-void
-arc4random_buf(void *_buf, size_t n)
-{
-       size_t i;
-       u_int32_t r = 0;
-       char *buf = (char *)_buf;
-
-       for (i = 0; i < n; i++) {
-               if (i % 4 == 0)
-                       r = arc4random();
-               buf[i] = r & 0xff;
-               r >>= 8;
-       }
-       explicit_bzero(&r, sizeof(r));
-}
-#endif /* !defined(HAVE_ARC4RANDOM_BUF) && defined(HAVE_ARC4RANDOM) */
-
-#ifndef HAVE_ARC4RANDOM_UNIFORM
-/*
- * Calculate a uniformly distributed random number less than upper_bound
- * avoiding "modulo bias".
- *
- * Uniformity is achieved by generating new random numbers until the one
- * returned is outside the range [0, 2**32 % upper_bound).  This
- * guarantees the selected random number will be inside
- * [2**32 % upper_bound, 2**32) which maps back to [0, upper_bound)
- * after reduction modulo upper_bound.
- */
-u_int32_t
-arc4random_uniform(u_int32_t upper_bound)
-{
-       u_int32_t r, min;
-
-       if (upper_bound < 2)
-               return 0;
-
-       /* 2**32 % x == (2**32 - x) % x */
-       min = -upper_bound % upper_bound;
-
-       /*
-        * This could theoretically loop forever but each retry has
-        * p > 0.5 (worst case, usually far better) of selecting a
-        * number inside the range we need, so it should rarely need
-        * to re-roll.
-        */
-       for (;;) {
-               r = arc4random();
-               if (r >= min)
-                       break;
-       }
-
-       return r % upper_bound;
-}
-#endif /* !HAVE_ARC4RANDOM_UNIFORM */
-
-#if 0
-/*-------- Test code for i386 --------*/
-#include <stdio.h>
-#include <machine/pctr.h>
-int
-main(int argc, char **argv)
-{
-       const int iter = 1000000;
-       int     i;
-       pctrval v;
-
-       v = rdtsc();
-       for (i = 0; i < iter; i++)
-               arc4random();
-       v = rdtsc() - v;
-       v /= iter;
-
-       printf("%qd cycles\n", v);
-       exit(0);
-}
-#endif
diff --git a/crypto/openssh/openbsd-compat/bsd-setres_id.c b/crypto/openssh/openbsd-compat/bsd-setres_id.c
deleted file mode 100644 (file)
index 018bde8..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/* $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).
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "includes.h"
-
-#include <sys/types.h>
-
-#include <stdarg.h>
-#include <unistd.h>
-#include <string.h>
-
-#include "log.h"
-
-#if !defined(HAVE_SETRESGID) || defined(BROKEN_SETRESGID)
-int
-setresgid(gid_t rgid, gid_t egid, gid_t sgid)
-{
-       int ret = 0, saved_errno;
-
-       if (rgid != sgid) {
-               errno = ENOSYS;
-               return -1;
-       }
-#if defined(HAVE_SETREGID) && !defined(BROKEN_SETREGID)
-       if (setregid(rgid, egid) < 0) {
-               saved_errno = errno;
-               error("setregid %u: %.100s", rgid, strerror(errno));
-               errno = saved_errno;
-               ret = -1;
-       }
-#else
-       if (setegid(egid) < 0) {
-               saved_errno = errno;
-               error("setegid %u: %.100s", (u_int)egid, strerror(errno));
-               errno = saved_errno;
-               ret = -1;
-       }
-       if (setgid(rgid) < 0) {
-               saved_errno = errno;
-               error("setgid %u: %.100s", rgid, strerror(errno));
-               errno = saved_errno;
-               ret = -1;
-       }
-#endif
-       return ret;
-}
-#endif
-
-#if !defined(HAVE_SETRESUID) || defined(BROKEN_SETRESUID)
-int
-setresuid(uid_t ruid, uid_t euid, uid_t suid)
-{
-       int ret = 0, saved_errno;
-
-       if (ruid != suid) {
-               errno = ENOSYS;
-               return -1;
-       }
-#if defined(HAVE_SETREUID) && !defined(BROKEN_SETREUID)
-       if (setreuid(ruid, euid) < 0) {
-               saved_errno = errno;
-               error("setreuid %u: %.100s", ruid, strerror(errno));
-               errno = saved_errno;
-               ret = -1;
-       }
-#else
-
-# ifndef SETEUID_BREAKS_SETUID
-       if (seteuid(euid) < 0) {
-               saved_errno = errno;
-               error("seteuid %u: %.100s", euid, strerror(errno));
-               errno = saved_errno;
-               ret = -1;
-       }
-# endif
-       if (setuid(ruid) < 0) {
-               saved_errno = errno;
-               error("setuid %u: %.100s", ruid, strerror(errno));
-               errno = saved_errno;
-               ret = -1;
-       }
-#endif
-       return ret;
-}
-#endif
diff --git a/crypto/openssh/openbsd-compat/chacha_private.h b/crypto/openssh/openbsd-compat/chacha_private.h
deleted file mode 100644 (file)
index 7c3680f..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
-chacha-merged.c version 20080118
-D. J. Bernstein
-Public domain.
-*/
-
-/* $OpenBSD: chacha_private.h,v 1.2 2013/10/04 07:02:27 djm Exp $ */
-
-typedef unsigned char u8;
-typedef unsigned int u32;
-
-typedef struct
-{
-  u32 input[16]; /* could be compressed */
-} chacha_ctx;
-
-#define U8C(v) (v##U)
-#define U32C(v) (v##U)
-
-#define U8V(v) ((u8)(v) & U8C(0xFF))
-#define U32V(v) ((u32)(v) & U32C(0xFFFFFFFF))
-
-#define ROTL32(v, n) \
-  (U32V((v) << (n)) | ((v) >> (32 - (n))))
-
-#define U8TO32_LITTLE(p) \
-  (((u32)((p)[0])      ) | \
-   ((u32)((p)[1]) <<  8) | \
-   ((u32)((p)[2]) << 16) | \
-   ((u32)((p)[3]) << 24))
-
-#define U32TO8_LITTLE(p, v) \
-  do { \
-    (p)[0] = U8V((v)      ); \
-    (p)[1] = U8V((v) >>  8); \
-    (p)[2] = U8V((v) >> 16); \
-    (p)[3] = U8V((v) >> 24); \
-  } while (0)
-
-#define ROTATE(v,c) (ROTL32(v,c))
-#define XOR(v,w) ((v) ^ (w))
-#define PLUS(v,w) (U32V((v) + (w)))
-#define PLUSONE(v) (PLUS((v),1))
-
-#define QUARTERROUND(a,b,c,d) \
-  a = PLUS(a,b); d = ROTATE(XOR(d,a),16); \
-  c = PLUS(c,d); b = ROTATE(XOR(b,c),12); \
-  a = PLUS(a,b); d = ROTATE(XOR(d,a), 8); \
-  c = PLUS(c,d); b = ROTATE(XOR(b,c), 7);
-
-static const char sigma[16] = "expand 32-byte k";
-static const char tau[16] = "expand 16-byte k";
-
-static void
-chacha_keysetup(chacha_ctx *x,const u8 *k,u32 kbits,u32 ivbits)
-{
-  const char *constants;
-
-  x->input[4] = U8TO32_LITTLE(k + 0);
-  x->input[5] = U8TO32_LITTLE(k + 4);
-  x->input[6] = U8TO32_LITTLE(k + 8);
-  x->input[7] = U8TO32_LITTLE(k + 12);
-  if (kbits == 256) { /* recommended */
-    k += 16;
-    constants = sigma;
-  } else { /* kbits == 128 */
-    constants = tau;
-  }
-  x->input[8] = U8TO32_LITTLE(k + 0);
-  x->input[9] = U8TO32_LITTLE(k + 4);
-  x->input[10] = U8TO32_LITTLE(k + 8);
-  x->input[11] = U8TO32_LITTLE(k + 12);
-  x->input[0] = U8TO32_LITTLE(constants + 0);
-  x->input[1] = U8TO32_LITTLE(constants + 4);
-  x->input[2] = U8TO32_LITTLE(constants + 8);
-  x->input[3] = U8TO32_LITTLE(constants + 12);
-}
-
-static void
-chacha_ivsetup(chacha_ctx *x,const u8 *iv)
-{
-  x->input[12] = 0;
-  x->input[13] = 0;
-  x->input[14] = U8TO32_LITTLE(iv + 0);
-  x->input[15] = U8TO32_LITTLE(iv + 4);
-}
-
-static void
-chacha_encrypt_bytes(chacha_ctx *x,const u8 *m,u8 *c,u32 bytes)
-{
-  u32 x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15;
-  u32 j0, j1, j2, j3, j4, j5, j6, j7, j8, j9, j10, j11, j12, j13, j14, j15;
-  u8 *ctarget = NULL;
-  u8 tmp[64];
-  u_int i;
-
-  if (!bytes) return;
-
-  j0 = x->input[0];
-  j1 = x->input[1];
-  j2 = x->input[2];
-  j3 = x->input[3];
-  j4 = x->input[4];
-  j5 = x->input[5];
-  j6 = x->input[6];
-  j7 = x->input[7];
-  j8 = x->input[8];
-  j9 = x->input[9];
-  j10 = x->input[10];
-  j11 = x->input[11];
-  j12 = x->input[12];
-  j13 = x->input[13];
-  j14 = x->input[14];
-  j15 = x->input[15];
-
-  for (;;) {
-    if (bytes < 64) {
-      for (i = 0;i < bytes;++i) tmp[i] = m[i];
-      m = tmp;
-      ctarget = c;
-      c = tmp;
-    }
-    x0 = j0;
-    x1 = j1;
-    x2 = j2;
-    x3 = j3;
-    x4 = j4;
-    x5 = j5;
-    x6 = j6;
-    x7 = j7;
-    x8 = j8;
-    x9 = j9;
-    x10 = j10;
-    x11 = j11;
-    x12 = j12;
-    x13 = j13;
-    x14 = j14;
-    x15 = j15;
-    for (i = 20;i > 0;i -= 2) {
-      QUARTERROUND( x0, x4, x8,x12)
-      QUARTERROUND( x1, x5, x9,x13)
-      QUARTERROUND( x2, x6,x10,x14)
-      QUARTERROUND( x3, x7,x11,x15)
-      QUARTERROUND( x0, x5,x10,x15)
-      QUARTERROUND( x1, x6,x11,x12)
-      QUARTERROUND( x2, x7, x8,x13)
-      QUARTERROUND( x3, x4, x9,x14)
-    }
-    x0 = PLUS(x0,j0);
-    x1 = PLUS(x1,j1);
-    x2 = PLUS(x2,j2);
-    x3 = PLUS(x3,j3);
-    x4 = PLUS(x4,j4);
-    x5 = PLUS(x5,j5);
-    x6 = PLUS(x6,j6);
-    x7 = PLUS(x7,j7);
-    x8 = PLUS(x8,j8);
-    x9 = PLUS(x9,j9);
-    x10 = PLUS(x10,j10);
-    x11 = PLUS(x11,j11);
-    x12 = PLUS(x12,j12);
-    x13 = PLUS(x13,j13);
-    x14 = PLUS(x14,j14);
-    x15 = PLUS(x15,j15);
-
-#ifndef KEYSTREAM_ONLY
-    x0 = XOR(x0,U8TO32_LITTLE(m + 0));
-    x1 = XOR(x1,U8TO32_LITTLE(m + 4));
-    x2 = XOR(x2,U8TO32_LITTLE(m + 8));
-    x3 = XOR(x3,U8TO32_LITTLE(m + 12));
-    x4 = XOR(x4,U8TO32_LITTLE(m + 16));
-    x5 = XOR(x5,U8TO32_LITTLE(m + 20));
-    x6 = XOR(x6,U8TO32_LITTLE(m + 24));
-    x7 = XOR(x7,U8TO32_LITTLE(m + 28));
-    x8 = XOR(x8,U8TO32_LITTLE(m + 32));
-    x9 = XOR(x9,U8TO32_LITTLE(m + 36));
-    x10 = XOR(x10,U8TO32_LITTLE(m + 40));
-    x11 = XOR(x11,U8TO32_LITTLE(m + 44));
-    x12 = XOR(x12,U8TO32_LITTLE(m + 48));
-    x13 = XOR(x13,U8TO32_LITTLE(m + 52));
-    x14 = XOR(x14,U8TO32_LITTLE(m + 56));
-    x15 = XOR(x15,U8TO32_LITTLE(m + 60));
-#endif
-
-    j12 = PLUSONE(j12);
-    if (!j12) {
-      j13 = PLUSONE(j13);
-      /* stopping at 2^70 bytes per nonce is user's responsibility */
-    }
-
-    U32TO8_LITTLE(c + 0,x0);
-    U32TO8_LITTLE(c + 4,x1);
-    U32TO8_LITTLE(c + 8,x2);
-    U32TO8_LITTLE(c + 12,x3);
-    U32TO8_LITTLE(c + 16,x4);
-    U32TO8_LITTLE(c + 20,x5);
-    U32TO8_LITTLE(c + 24,x6);
-    U32TO8_LITTLE(c + 28,x7);
-    U32TO8_LITTLE(c + 32,x8);
-    U32TO8_LITTLE(c + 36,x9);
-    U32TO8_LITTLE(c + 40,x10);
-    U32TO8_LITTLE(c + 44,x11);
-    U32TO8_LITTLE(c + 48,x12);
-    U32TO8_LITTLE(c + 52,x13);
-    U32TO8_LITTLE(c + 56,x14);
-    U32TO8_LITTLE(c + 60,x15);
-
-    if (bytes <= 64) {
-      if (bytes < 64) {
-        for (i = 0;i < bytes;++i) ctarget[i] = c[i];
-      }
-      x->input[12] = j12;
-      x->input[13] = j13;
-      return;
-    }
-    bytes -= 64;
-    c += 64;
-#ifndef KEYSTREAM_ONLY
-    m += 64;
-#endif
-  }
-}
diff --git a/crypto/openssh/openbsd-compat/getopt.h b/crypto/openssh/openbsd-compat/getopt.h
deleted file mode 100644 (file)
index 8eb1244..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*     $OpenBSD: getopt.h,v 1.2 2008/06/26 05:42:04 ray Exp $  */
-/*     $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $    */
-
-/*-
- * Copyright (c) 2000 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Dieter Baron and Thomas Klausner.
- *
- * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
- */
-
-#ifndef _GETOPT_H_
-#define _GETOPT_H_
-
-/*
- * GNU-like getopt_long() and 4.4BSD getsubopt()/optreset extensions
- */
-#define no_argument        0
-#define required_argument  1
-#define optional_argument  2
-
-struct option {
-       /* name of long option */
-       const char *name;
-       /*
-        * one of no_argument, required_argument, and optional_argument:
-        * whether option takes an argument
-        */
-       int has_arg;
-       /* if not NULL, set *flag to val when option found */
-       int *flag;
-       /* if flag not NULL, value to set *flag to; else return value */
-       int val;
-};
-
-int     getopt_long(int, char * const *, const char *,
-           const struct option *, int *);
-int     getopt_long_only(int, char * const *, const char *,
-           const struct option *, int *);
-#ifndef _GETOPT_DEFINED_
-#define _GETOPT_DEFINED_
-int     getopt(int, char * const *, const char *);
-int     getsubopt(char **, char * const *, char **);
-
-extern   char *optarg;                  /* getopt(3) external variables */
-extern   int opterr;
-extern   int optind;
-extern   int optopt;
-extern   int optreset;
-extern   char *suboptarg;               /* getsubopt(3) external variable */
-#endif
-#endif /* !_GETOPT_H_ */
diff --git a/crypto/openssh/openbsd-compat/getopt_long.c b/crypto/openssh/openbsd-compat/getopt_long.c
deleted file mode 100644 (file)
index e289474..0000000
+++ /dev/null
@@ -1,532 +0,0 @@
-/*     $OpenBSD: getopt_long.c,v 1.25 2011/03/05 22:10:11 guenther Exp $       */
-/*     $NetBSD: getopt_long.c,v 1.15 2002/01/31 22:43:40 tv Exp $      */
-
-/*
- * Copyright (c) 2002 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
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- * Sponsored in part by the Defense Advanced Research Projects
- * Agency (DARPA) and Air Force Research Laboratory, Air Force
- * Materiel Command, USAF, under agreement number F39502-99-1-0512.
- */
-/*-
- * Copyright (c) 2000 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Dieter Baron and Thomas Klausner.
- *
- * 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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/stdlib/getopt_long.c */
-#include "includes.h"
-
-#if !defined(HAVE_GETOPT) || !defined(HAVE_GETOPT_OPTRESET)
-
-/*
- * Some defines to make it easier to keep the code in sync with upstream.
- * getopt opterr optind optopt optreset optarg are all in defines.h which is
- * pulled in by includes.h.
- */
-#define warnx          logit
-
-#if 0
-#include <err.h>
-#include <getopt.h>
-#endif
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include "log.h"
-
-int    opterr = 1;             /* if error message should be printed */
-int    optind = 1;             /* index into parent argv vector */
-int    optopt = '?';           /* character checked for validity */
-int    optreset;               /* reset getopt */
-char    *optarg;               /* argument associated with option */
-
-#define PRINT_ERROR    ((opterr) && (*options != ':'))
-
-#define FLAG_PERMUTE   0x01    /* permute non-options to the end of argv */
-#define FLAG_ALLARGS   0x02    /* treat non-options as args to option "-1" */
-#define FLAG_LONGONLY  0x04    /* operate as getopt_long_only */
-
-/* return values */
-#define        BADCH           (int)'?'
-#define        BADARG          ((*options == ':') ? (int)':' : (int)'?')
-#define        INORDER         (int)1
-
-#define        EMSG            ""
-
-static int getopt_internal(int, char * const *, const char *,
-                          const struct option *, int *, int);
-static int parse_long_options(char * const *, const char *,
-                             const struct option *, int *, int);
-static int gcd(int, int);
-static void permute_args(int, int, int, char * const *);
-
-static char *place = EMSG; /* option letter processing */
-
-/* XXX: set optreset to 1 rather than these two */
-static int nonopt_start = -1; /* first non option argument (for permute) */
-static int nonopt_end = -1;   /* first option after non options (for permute) */
-
-/* Error messages */
-static const char recargchar[] = "option requires an argument -- %c";
-static const char recargstring[] = "option requires an argument -- %s";
-static const char ambig[] = "ambiguous option -- %.*s";
-static const char noarg[] = "option doesn't take an argument -- %.*s";
-static const char illoptchar[] = "unknown option -- %c";
-static const char illoptstring[] = "unknown option -- %s";
-
-/*
- * Compute the greatest common divisor of a and b.
- */
-static int
-gcd(int a, int b)
-{
-       int c;
-
-       c = a % b;
-       while (c != 0) {
-               a = b;
-               b = c;
-               c = a % b;
-       }
-
-       return (b);
-}
-
-/*
- * Exchange the block from nonopt_start to nonopt_end with the block
- * from nonopt_end to opt_end (keeping the same order of arguments
- * in each block).
- */
-static void
-permute_args(int panonopt_start, int panonopt_end, int opt_end,
-       char * const *nargv)
-{
-       int cstart, cyclelen, i, j, ncycle, nnonopts, nopts, pos;
-       char *swap;
-
-       /*
-        * compute lengths of blocks and number and size of cycles
-        */
-       nnonopts = panonopt_end - panonopt_start;
-       nopts = opt_end - panonopt_end;
-       ncycle = gcd(nnonopts, nopts);
-       cyclelen = (opt_end - panonopt_start) / ncycle;
-
-       for (i = 0; i < ncycle; i++) {
-               cstart = panonopt_end+i;
-               pos = cstart;
-               for (j = 0; j < cyclelen; j++) {
-                       if (pos >= panonopt_end)
-                               pos -= nnonopts;
-                       else
-                               pos += nopts;
-                       swap = nargv[pos];
-                       /* LINTED const cast */
-                       ((char **) nargv)[pos] = nargv[cstart];
-                       /* LINTED const cast */
-                       ((char **)nargv)[cstart] = swap;
-               }
-       }
-}
-
-/*
- * parse_long_options --
- *     Parse long options in argc/argv argument vector.
- * Returns -1 if short_too is set and the option does not match long_options.
- */
-static int
-parse_long_options(char * const *nargv, const char *options,
-       const struct option *long_options, int *idx, int short_too)
-{
-       char *current_argv, *has_equal;
-       size_t current_argv_len;
-       int i, match;
-
-       current_argv = place;
-       match = -1;
-
-       optind++;
-
-       if ((has_equal = strchr(current_argv, '=')) != NULL) {
-               /* argument found (--option=arg) */
-               current_argv_len = has_equal - current_argv;
-               has_equal++;
-       } else
-               current_argv_len = strlen(current_argv);
-
-       for (i = 0; long_options[i].name; i++) {
-               /* find matching long option */
-               if (strncmp(current_argv, long_options[i].name,
-                   current_argv_len))
-                       continue;
-
-               if (strlen(long_options[i].name) == current_argv_len) {
-                       /* exact match */
-                       match = i;
-                       break;
-               }
-               /*
-                * If this is a known short option, don't allow
-                * a partial match of a single character.
-                */
-               if (short_too && current_argv_len == 1)
-                       continue;
-
-               if (match == -1)        /* partial match */
-                       match = i;
-               else {
-                       /* ambiguous abbreviation */
-                       if (PRINT_ERROR)
-                               warnx(ambig, (int)current_argv_len,
-                                    current_argv);
-                       optopt = 0;
-                       return (BADCH);
-               }
-       }
-       if (match != -1) {              /* option found */
-               if (long_options[match].has_arg == no_argument
-                   && has_equal) {
-                       if (PRINT_ERROR)
-                               warnx(noarg, (int)current_argv_len,
-                                    current_argv);
-                       /*
-                        * XXX: GNU sets optopt to val regardless of flag
-                        */
-                       if (long_options[match].flag == NULL)
-                               optopt = long_options[match].val;
-                       else
-                               optopt = 0;
-                       return (BADARG);
-               }
-               if (long_options[match].has_arg == required_argument ||
-                   long_options[match].has_arg == optional_argument) {
-                       if (has_equal)
-                               optarg = has_equal;
-                       else if (long_options[match].has_arg ==
-                           required_argument) {
-                               /*
-                                * optional argument doesn't use next nargv
-                                */
-                               optarg = nargv[optind++];
-                       }
-               }
-               if ((long_options[match].has_arg == required_argument)
-                   && (optarg == NULL)) {
-                       /*
-                        * Missing argument; leading ':' indicates no error
-                        * should be generated.
-                        */
-                       if (PRINT_ERROR)
-                               warnx(recargstring,
-                                   current_argv);
-                       /*
-                        * XXX: GNU sets optopt to val regardless of flag
-                        */
-                       if (long_options[match].flag == NULL)
-                               optopt = long_options[match].val;
-                       else
-                               optopt = 0;
-                       --optind;
-                       return (BADARG);
-               }
-       } else {                        /* unknown option */
-               if (short_too) {
-                       --optind;
-                       return (-1);
-               }
-               if (PRINT_ERROR)
-                       warnx(illoptstring, current_argv);
-               optopt = 0;
-               return (BADCH);
-       }
-       if (idx)
-               *idx = match;
-       if (long_options[match].flag) {
-               *long_options[match].flag = long_options[match].val;
-               return (0);
-       } else
-               return (long_options[match].val);
-}
-
-/*
- * getopt_internal --
- *     Parse argc/argv argument vector.  Called by user level routines.
- */
-static int
-getopt_internal(int nargc, char * const *nargv, const char *options,
-       const struct option *long_options, int *idx, int flags)
-{
-       char *oli;                              /* option letter list index */
-       int optchar, short_too;
-       static int posixly_correct = -1;
-
-       if (options == NULL)
-               return (-1);
-
-       /*
-        * XXX Some GNU programs (like cvs) set optind to 0 instead of
-        * XXX using optreset.  Work around this braindamage.
-        */
-       if (optind == 0)
-               optind = optreset = 1;
-
-       /*
-        * Disable GNU extensions if POSIXLY_CORRECT is set or options
-        * string begins with a '+'.
-        */
-       if (posixly_correct == -1 || optreset)
-               posixly_correct = (getenv("POSIXLY_CORRECT") != NULL);
-       if (*options == '-')
-               flags |= FLAG_ALLARGS;
-       else if (posixly_correct || *options == '+')
-               flags &= ~FLAG_PERMUTE;
-       if (*options == '+' || *options == '-')
-               options++;
-
-       optarg = NULL;
-       if (optreset)
-               nonopt_start = nonopt_end = -1;
-start:
-       if (optreset || !*place) {              /* update scanning pointer */
-               optreset = 0;
-               if (optind >= nargc) {          /* end of argument vector */
-                       place = EMSG;
-                       if (nonopt_end != -1) {
-                               /* do permutation, if we have to */
-                               permute_args(nonopt_start, nonopt_end,
-                                   optind, nargv);
-                               optind -= nonopt_end - nonopt_start;
-                       }
-                       else if (nonopt_start != -1) {
-                               /*
-                                * If we skipped non-options, set optind
-                                * to the first of them.
-                                */
-                               optind = nonopt_start;
-                       }
-                       nonopt_start = nonopt_end = -1;
-                       return (-1);
-               }
-               if (*(place = nargv[optind]) != '-' ||
-                   (place[1] == '\0' && strchr(options, '-') == NULL)) {
-                       place = EMSG;           /* found non-option */
-                       if (flags & FLAG_ALLARGS) {
-                               /*
-                                * GNU extension:
-                                * return non-option as argument to option 1
-                                */
-                               optarg = nargv[optind++];
-                               return (INORDER);
-                       }
-                       if (!(flags & FLAG_PERMUTE)) {
-                               /*
-                                * If no permutation wanted, stop parsing
-                                * at first non-option.
-                                */
-                               return (-1);
-                       }
-                       /* do permutation */
-                       if (nonopt_start == -1)
-                               nonopt_start = optind;
-                       else if (nonopt_end != -1) {
-                               permute_args(nonopt_start, nonopt_end,
-                                   optind, nargv);
-                               nonopt_start = optind -
-                                   (nonopt_end - nonopt_start);
-                               nonopt_end = -1;
-                       }
-                       optind++;
-                       /* process next argument */
-                       goto start;
-               }
-               if (nonopt_start != -1 && nonopt_end == -1)
-                       nonopt_end = optind;
-
-               /*
-                * If we have "-" do nothing, if "--" we are done.
-                */
-               if (place[1] != '\0' && *++place == '-' && place[1] == '\0') {
-                       optind++;
-                       place = EMSG;
-                       /*
-                        * We found an option (--), so if we skipped
-                        * non-options, we have to permute.
-                        */
-                       if (nonopt_end != -1) {
-                               permute_args(nonopt_start, nonopt_end,
-                                   optind, nargv);
-                               optind -= nonopt_end - nonopt_start;
-                       }
-                       nonopt_start = nonopt_end = -1;
-                       return (-1);
-               }
-       }
-
-       /*
-        * Check long options if:
-        *  1) we were passed some
-        *  2) the arg is not just "-"
-        *  3) either the arg starts with -- we are getopt_long_only()
-        */
-       if (long_options != NULL && place != nargv[optind] &&
-           (*place == '-' || (flags & FLAG_LONGONLY))) {
-               short_too = 0;
-               if (*place == '-')
-                       place++;                /* --foo long option */
-               else if (*place != ':' && strchr(options, *place) != NULL)
-                       short_too = 1;          /* could be short option too */
-
-               optchar = parse_long_options(nargv, options, long_options,
-                   idx, short_too);
-               if (optchar != -1) {
-                       place = EMSG;
-                       return (optchar);
-               }
-       }
-
-       if ((optchar = (int)*place++) == (int)':' ||
-           (optchar == (int)'-' && *place != '\0') ||
-           (oli = strchr(options, optchar)) == NULL) {
-               /*
-                * If the user specified "-" and  '-' isn't listed in
-                * options, return -1 (non-option) as per POSIX.
-                * Otherwise, it is an unknown option character (or ':').
-                */
-               if (optchar == (int)'-' && *place == '\0')
-                       return (-1);
-               if (!*place)
-                       ++optind;
-               if (PRINT_ERROR)
-                       warnx(illoptchar, optchar);
-               optopt = optchar;
-               return (BADCH);
-       }
-       if (long_options != NULL && optchar == 'W' && oli[1] == ';') {
-               /* -W long-option */
-               if (*place)                     /* no space */
-                       /* NOTHING */;
-               else if (++optind >= nargc) {   /* no arg */
-                       place = EMSG;
-                       if (PRINT_ERROR)
-                               warnx(recargchar, optchar);
-                       optopt = optchar;
-                       return (BADARG);
-               } else                          /* white space */
-                       place = nargv[optind];
-               optchar = parse_long_options(nargv, options, long_options,
-                   idx, 0);
-               place = EMSG;
-               return (optchar);
-       }
-       if (*++oli != ':') {                    /* doesn't take argument */
-               if (!*place)
-                       ++optind;
-       } else {                                /* takes (optional) argument */
-               optarg = NULL;
-               if (*place)                     /* no white space */
-                       optarg = place;
-               else if (oli[1] != ':') {       /* arg not optional */
-                       if (++optind >= nargc) {        /* no arg */
-                               place = EMSG;
-                               if (PRINT_ERROR)
-                                       warnx(recargchar, optchar);
-                               optopt = optchar;
-                               return (BADARG);
-                       } else
-                               optarg = nargv[optind];
-               }
-               place = EMSG;
-               ++optind;
-       }
-       /* dump back option letter */
-       return (optchar);
-}
-
-/*
- * getopt --
- *     Parse argc/argv argument vector.
- *
- * [eventually this will replace the BSD getopt]
- */
-int
-getopt(int nargc, char * const *nargv, const char *options)
-{
-
-       /*
-        * We don't pass FLAG_PERMUTE to getopt_internal() since
-        * the BSD getopt(3) (unlike GNU) has never done this.
-        *
-        * Furthermore, since many privileged programs call getopt()
-        * before dropping privileges it makes sense to keep things
-        * as simple (and bug-free) as possible.
-        */
-       return (getopt_internal(nargc, nargv, options, NULL, NULL, 0));
-}
-
-#if 0
-/*
- * getopt_long --
- *     Parse argc/argv argument vector.
- */
-int
-getopt_long(int nargc, char * const *nargv, const char *options,
-    const struct option *long_options, int *idx)
-{
-
-       return (getopt_internal(nargc, nargv, options, long_options, idx,
-           FLAG_PERMUTE));
-}
-
-/*
- * getopt_long_only --
- *     Parse argc/argv argument vector.
- */
-int
-getopt_long_only(int nargc, char * const *nargv, const char *options,
-    const struct option *long_options, int *idx)
-{
-
-       return (getopt_internal(nargc, nargv, options, long_options, idx,
-           FLAG_PERMUTE|FLAG_LONGONLY));
-}
-#endif
-
-#endif /* !defined(HAVE_GETOPT) || !defined(HAVE_OPTRESET) */
diff --git a/crypto/openssh/openbsd-compat/kludge-fd_set.c b/crypto/openssh/openbsd-compat/kludge-fd_set.c
deleted file mode 100644 (file)
index 6c2ffb6..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Placed in the public domain.  */
-
-/*
- * _FORTIFY_SOURCE includes a misguided check for FD_SET(n)/FD_ISSET(b)
- * where n > FD_SETSIZE. This breaks OpenSSH and other programs that
- * explicitly allocate fd_sets. To avoid this, we wrap FD_SET in a
- * function compiled without _FORTIFY_SOURCE.
- */
-
-#include "config.h"
-
-#if defined(HAVE_FEATURES_H) && defined(_FORTIFY_SOURCE)
-# include <features.h>
-# if defined(__GNU_LIBRARY__) && defined(__GLIBC_PREREQ)
-#  if __GLIBC_PREREQ(2, 15) && (_FORTIFY_SOURCE > 0)
-#   undef _FORTIFY_SOURCE
-#   undef __USE_FORTIFY_LEVEL
-#   include <sys/socket.h>
-void kludge_FD_SET(int n, fd_set *set) {
-       FD_SET(n, set);
-}
-int kludge_FD_ISSET(int n, fd_set *set) {
-       return FD_ISSET(n, set);
-}
-#  endif /* __GLIBC_PREREQ(2, 15) && (_FORTIFY_SOURCE > 0) */
-# endif /* __GNU_LIBRARY__ && __GLIBC_PREREQ */
-#endif /* HAVE_FEATURES_H && _FORTIFY_SOURCE */
-
diff --git a/crypto/openssh/openbsd-compat/strtoull.c b/crypto/openssh/openbsd-compat/strtoull.c
deleted file mode 100644 (file)
index f7c818c..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*     $OpenBSD: strtoull.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */
-/*-
- * Copyright (c) 1992 The Regents of the University of California.
- * 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. 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/stdlib/strtoull.c */
-
-#include "includes.h"
-#ifndef HAVE_STRTOULL
-
-#include <sys/types.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-
-/*
- * Convert a string to an unsigned long long.
- *
- * Ignores `locale' stuff.  Assumes that the upper and lower case
- * alphabets and digits are each contiguous.
- */
-unsigned long long
-strtoull(const char *nptr, char **endptr, int base)
-{
-       const char *s;
-       unsigned long long acc, cutoff;
-       int c;
-       int neg, any, cutlim;
-
-       /*
-        * See strtoq for comments as to the logic used.
-        */
-       s = nptr;
-       do {
-               c = (unsigned char) *s++;
-       } while (isspace(c));
-       if (c == '-') {
-               neg = 1;
-               c = *s++;
-       } else { 
-               neg = 0;
-               if (c == '+')
-                       c = *s++;
-       }
-       if ((base == 0 || base == 16) &&
-           c == '0' && (*s == 'x' || *s == 'X')) {
-               c = s[1];
-               s += 2;
-               base = 16;
-       }
-       if (base == 0)
-               base = c == '0' ? 8 : 10;
-
-       cutoff = ULLONG_MAX / (unsigned long long)base;
-       cutlim = ULLONG_MAX % (unsigned long long)base;
-       for (acc = 0, any = 0;; c = (unsigned char) *s++) {
-               if (isdigit(c))
-                       c -= '0';
-               else if (isalpha(c))
-                       c -= isupper(c) ? 'A' - 10 : 'a' - 10;
-               else
-                       break;
-               if (c >= base)
-                       break;
-               if (any < 0)
-                       continue;
-               if (acc > cutoff || (acc == cutoff && c > cutlim)) {
-                       any = -1;
-                       acc = ULLONG_MAX;
-                       errno = ERANGE;
-               } else {
-                       any = 1;
-                       acc *= (unsigned long long)base;
-                       acc += c;
-               }
-       }
-       if (neg && any > 0)
-               acc = -acc;
-       if (endptr != 0)
-               *endptr = (char *) (any ? s - 1 : nptr);
-       return (acc);
-}
-#endif /* !HAVE_STRTOULL */
diff --git a/crypto/openssh/sandbox-capsicum.c b/crypto/openssh/sandbox-capsicum.c
deleted file mode 100644 (file)
index 655f0d2..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2011 Dag-Erling Smorgrav
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "includes.h"
-
-#ifdef SANDBOX_CAPSICUM
-
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/capability.h>
-
-#include <errno.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#include "log.h"
-#include "monitor.h"
-#include "ssh-sandbox.h"
-#include "xmalloc.h"
-
-/*
- * Capsicum sandbox that sets zero nfiles, nprocs and filesize rlimits,
- * limits rights on stdout, stdin, stderr, monitor and switches to
- * capability mode.
- */
-
-struct ssh_sandbox {
-       struct monitor *monitor;
-       pid_t child_pid;
-};
-
-struct ssh_sandbox *
-ssh_sandbox_init(struct monitor *monitor)
-{
-       struct ssh_sandbox *box;
-
-       /*
-        * Strictly, we don't need to maintain any state here but we need
-        * to return non-NULL to satisfy the API.
-        */
-       debug3("%s: preparing capsicum sandbox", __func__);
-       box = xcalloc(1, sizeof(*box));
-       box->monitor = monitor;
-       box->child_pid = 0;
-
-       return box;
-}
-
-void
-ssh_sandbox_child(struct ssh_sandbox *box)
-{
-       struct rlimit rl_zero;
-       cap_rights_t rights;
-
-       rl_zero.rlim_cur = rl_zero.rlim_max = 0;
-
-       if (setrlimit(RLIMIT_FSIZE, &rl_zero) == -1)
-               fatal("%s: setrlimit(RLIMIT_FSIZE, { 0, 0 }): %s",
-                       __func__, strerror(errno));
-#ifndef SANDBOX_SKIP_RLIMIT_NOFILE
-       if (setrlimit(RLIMIT_NOFILE, &rl_zero) == -1)
-               fatal("%s: setrlimit(RLIMIT_NOFILE, { 0, 0 }): %s",
-                       __func__, strerror(errno));
-#endif
-       if (setrlimit(RLIMIT_NPROC, &rl_zero) == -1)
-               fatal("%s: setrlimit(RLIMIT_NPROC, { 0, 0 }): %s",
-                       __func__, strerror(errno));
-
-       cap_rights_init(&rights);
-
-       if (cap_rights_limit(STDIN_FILENO, &rights) < 0 && errno != ENOSYS)
-               fatal("can't limit stdin: %m");
-       if (cap_rights_limit(STDOUT_FILENO, &rights) < 0 && errno != ENOSYS)
-               fatal("can't limit stdout: %m");
-       if (cap_rights_limit(STDERR_FILENO, &rights) < 0 && errno != ENOSYS)
-               fatal("can't limit stderr: %m");
-
-       cap_rights_init(&rights, CAP_READ, CAP_WRITE);
-       if (cap_rights_limit(box->monitor->m_recvfd, &rights) < 0 &&
-           errno != ENOSYS)
-               fatal("%s: failed to limit the network socket", __func__);
-       cap_rights_init(&rights, CAP_WRITE);
-       if (cap_rights_limit(box->monitor->m_log_sendfd, &rights) < 0 &&
-           errno != ENOSYS)
-               fatal("%s: failed to limit the logging socket", __func__);
-       if (cap_enter() < 0 && errno != ENOSYS)
-               fatal("%s: failed to enter capability mode", __func__);
-
-}
-
-void
-ssh_sandbox_parent_finish(struct ssh_sandbox *box)
-{
-       free(box);
-       debug3("%s: finished", __func__);
-}
-
-void
-ssh_sandbox_parent_preauth(struct ssh_sandbox *box, pid_t child_pid)
-{
-       box->child_pid = child_pid;
-}
-
-#endif /* SANDBOX_CAPSICUM */