components/openssl/openssl-default/wanboot-openssl/wanboot-stubs.c
author Ronald Jordan <ron.jordan@oracle.com>
Wed, 26 Oct 2016 13:19:33 -0700
branchs11u3-sru
changeset 7163 ee09edbd5876
parent 2593 components/openssl/openssl-1.0.1/wanboot-openssl/wanboot-stubs.c@b92e6df5eaf0
permissions -rw-r--r--
24784774 Upgrade 11.3-SRU to OpenSSL 1.0.2 20358335 memory leak in libcrypto 21297601 32-bit FIPS openssl(1) should link to the mediator link 21791492 Workaround to suppress the link check error should be removed 22021385 openssl ts sub-command dumps core 22021787 openssl s_client sub-command dumps core 22445522 openssl makefile contains undeclared dependency on rsync 22859741 Update OpenSSL FIPS module to 2.0.12 23230454 Use DES3 for pkcs12 certificate encryption 23285559 ssh libcrypto`solaris_locking_setup() atfork handler calls malloc() 24377801 solaris_dynlock_create() should check for a ret val of 0 from pthread_mutex_init 24943813 problem in LIBRARY/OPENSSL

/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 */

/* Content of this file is only needed for wanboot. */
#ifdef	_BOOT

#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
#include <stddef.h>

/*
 * In OpenSSL 0.9.7 the EVP_read_pw_string now calls into the new "ui"
 * routines of 0.9.7, which is not compiled in the standalone, so it is
 * stubbed out here to avoid having to add a bunch of #ifndef's elsewhere.
 */
/* ARGSUSED */
int
EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt, int
    verify)
{
	return (-1); /* failure */
}

/*
 * In standalone issetugid() is always false.
 */
int
OPENSSL_issetugid(void)
{
	return (1);
}

/*
 * Directory routines -- currently, the only consumer of these interfaces
 * is $SRC/common/openssl/ssl/ssl_cert.c, and it has fallback code in the
 * case of failure, so we just fail opendir() and stub out the rest.  At
 * some point, we may need to provide a real implementation.
 */
/* ARGSUSED */
DIR *
opendir(const char *dirname)
{
	errno = EACCES;
	return (NULL);
}

/* ARGSUSED */
struct dirent *
readdir(DIR *dirp)
{
	return (NULL);
}

/* ARGSUSED */
int
closedir(DIR *dirp)
{
	return (0);
}

/*
 * Atoi is used on multiple places in libcrypto.
 * This implementation is taken from stand-alone libsock library:
 * usr/src/stand/lib/sock/sock_test.c
 * Alternative solution: just extern it here, wanboot has -lsock anyway.
 */
#ifndef	isdigit
#define	isdigit(c) ((c) >= '0' && (c) <= '9')
#endif

#ifndef	isspace
#define	isspace(c) ((c) == ' ' || (c) == '\t' || (c) == '\n' || \
		    (c) == '\r' || (c) == '\f' || (c) == '\013')
#endif
int
atoi(const char *p)
{
	int n;
	int c = *p++, neg = 0;

	while (isspace(c)) {
		c = *p++;
	}
	if (!isdigit(c)) {
		switch (c) {
		case '-':
			neg++;
			/* FALLTHROUGH */
		case '+':
			c = *p++;
		}
	}
	for (n = 0; isdigit(c); c = *p++) {
		n *= 10; /* two steps to avoid unnecessary overflow */
		n += '0' - c; /* accum neg to avoid surprises at MAX */
	}
	return (neg ? n : -n);
}

#endif	/* _BOOT */