sync with OpenBSD -current

This commit is contained in:
purplerain 2024-06-02 01:52:29 +00:00
parent 7c962f73cd
commit 0d61274b26
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
18 changed files with 90 additions and 103 deletions

View File

@ -1,4 +1,4 @@
/* $OpenBSD: chacha-merged.c,v 1.11 2023/07/07 19:37:53 beck Exp $ */ /* $OpenBSD: chacha-merged.c,v 1.12 2024/06/01 17:56:44 tb Exp $ */
/* /*
chacha-merged.c version 20080118 chacha-merged.c version 20080118
D. J. Bernstein D. J. Bernstein
@ -7,6 +7,10 @@ Public domain.
#include <stdint.h> #include <stdint.h>
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__OpenBSD__)
#define __bounded__(x, y, z)
#endif
#define CHACHA_MINKEYLEN 16 #define CHACHA_MINKEYLEN 16
#define CHACHA_NONCELEN 8 #define CHACHA_NONCELEN 8
#define CHACHA_CTRLEN 8 #define CHACHA_CTRLEN 8

View File

@ -1,4 +1,4 @@
/* $OpenBSD: hmac.c,v 1.34 2024/03/30 10:10:58 tb Exp $ */ /* $OpenBSD: hmac.c,v 1.35 2024/06/01 07:36:16 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -263,11 +263,8 @@ HMAC(const EVP_MD *evp_md, const void *key, int key_len, const unsigned char *d,
size_t n, unsigned char *md, unsigned int *md_len) size_t n, unsigned char *md, unsigned int *md_len)
{ {
HMAC_CTX c; HMAC_CTX c;
static unsigned char m[EVP_MAX_MD_SIZE];
const unsigned char dummy_key[1] = { 0 }; const unsigned char dummy_key[1] = { 0 };
if (md == NULL)
md = m;
if (key == NULL) { if (key == NULL) {
key = dummy_key; key = dummy_key;
key_len = 0; key_len = 0;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: hmac.h,v 1.17 2023/04/25 15:48:48 tb Exp $ */ /* $OpenBSD: hmac.h,v 1.18 2024/06/01 07:36:16 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -85,7 +85,8 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md,
int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len); int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len);
int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
const unsigned char *d, size_t n, unsigned char *md, unsigned int *md_len); const unsigned char *d, size_t n, unsigned char *md, unsigned int *md_len)
__attribute__((__nonnull__ (6)));
int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx);
void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags);

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: SHA1.3,v 1.8 2024/05/26 09:54:16 tb Exp $ .\" $OpenBSD: SHA1.3,v 1.9 2024/06/01 12:35:23 tb Exp $
.\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400 .\" OpenSSL 99d63d46 Oct 26 13:56:48 2016 -0400
.\" .\"
.\" This file was written by Ulf Moeller <ulf@openssl.org> and .\" This file was written by Ulf Moeller <ulf@openssl.org> and
@ -49,7 +49,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
.\" OF THE POSSIBILITY OF SUCH DAMAGE. .\" OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.Dd $Mdocdate: May 26 2024 $ .Dd $Mdocdate: June 1 2024 $
.Dt SHA1 3 .Dt SHA1 3
.Os .Os
.Sh NAME .Sh NAME
@ -237,9 +237,6 @@ bytes.
Applications should use the higher level functions Applications should use the higher level functions
.Xr EVP_DigestInit 3 .Xr EVP_DigestInit 3
etc. instead of calling the hash functions directly. etc. instead of calling the hash functions directly.
.Pp
The predecessor of SHA-1, SHA, is also implemented, but it should be
used only when backward compatibility is required.
.Sh RETURN VALUES .Sh RETURN VALUES
.Fn SHA1 , .Fn SHA1 ,
.Fn SHA224 , .Fn SHA224 ,
@ -254,9 +251,13 @@ The other functions return 1 for success or 0 otherwise.
.Xr HMAC 3 , .Xr HMAC 3 ,
.Xr RIPEMD160 3 .Xr RIPEMD160 3
.Sh STANDARDS .Sh STANDARDS
SHA: US Federal Information Processing Standard FIPS PUB 180 (Secure .Rs
Hash Standard), SHA-1: US Federal Information Processing Standard FIPS .%T Secure Hash Standard (SHS)
PUB 180-1 (Secure Hash Standard), ANSI X9.30 .%R NIST FIPS Publication
.%N 180-4
.%U https://doi.org/10.6028/NIST.FIPS.180-4
.%D 2015
.Re
.Sh HISTORY .Sh HISTORY
.Fn SHA1 , .Fn SHA1 ,
.Fn SHA1_Init , .Fn SHA1_Init ,

View File

@ -1,4 +1,4 @@
/* $OpenBSD: md4.c,v 1.17 2024/03/28 08:00:07 jsing Exp $ */ /* $OpenBSD: md4.c,v 1.18 2024/06/01 07:36:16 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -336,10 +336,7 @@ unsigned char *
MD4(const unsigned char *d, size_t n, unsigned char *md) MD4(const unsigned char *d, size_t n, unsigned char *md)
{ {
MD4_CTX c; MD4_CTX c;
static unsigned char m[MD4_DIGEST_LENGTH];
if (md == NULL)
md = m;
if (!MD4_Init(&c)) if (!MD4_Init(&c))
return NULL; return NULL;
MD4_Update(&c, d, n); MD4_Update(&c, d, n);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: md4.h,v 1.17 2023/07/08 06:47:26 jsing Exp $ */ /* $OpenBSD: md4.h,v 1.21 2024/06/01 18:42:49 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -61,6 +61,10 @@
#ifndef HEADER_MD4_H #ifndef HEADER_MD4_H
#define HEADER_MD4_H #define HEADER_MD4_H
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__OpenBSD__)
#define __bounded__(x, y, z)
#endif
#include <openssl/opensslconf.h> #include <openssl/opensslconf.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -91,9 +95,12 @@ typedef struct MD4state_st {
} MD4_CTX; } MD4_CTX;
int MD4_Init(MD4_CTX *c); int MD4_Init(MD4_CTX *c);
int MD4_Update(MD4_CTX *c, const void *data, size_t len); int MD4_Update(MD4_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3)));
int MD4_Final(unsigned char *md, MD4_CTX *c); int MD4_Final(unsigned char *md, MD4_CTX *c);
unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
void MD4_Transform(MD4_CTX *c, const unsigned char *b); void MD4_Transform(MD4_CTX *c, const unsigned char *b);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1,4 +1,4 @@
/* $OpenBSD: md5.c,v 1.22 2024/03/28 08:00:08 jsing Exp $ */ /* $OpenBSD: md5.c,v 1.23 2024/06/01 07:36:16 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -371,10 +371,7 @@ unsigned char *
MD5(const unsigned char *d, size_t n, unsigned char *md) MD5(const unsigned char *d, size_t n, unsigned char *md)
{ {
MD5_CTX c; MD5_CTX c;
static unsigned char m[MD5_DIGEST_LENGTH];
if (md == NULL)
md = m;
if (!MD5_Init(&c)) if (!MD5_Init(&c))
return NULL; return NULL;
MD5_Update(&c, d, n); MD5_Update(&c, d, n);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: md5.h,v 1.21 2023/07/08 06:50:38 jsing Exp $ */ /* $OpenBSD: md5.h,v 1.23 2024/06/01 07:44:11 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -98,7 +98,8 @@ int MD5_Update(MD5_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3))); __attribute__ ((__bounded__(__buffer__, 2, 3)));
int MD5_Final(unsigned char *md, MD5_CTX *c); int MD5_Final(unsigned char *md, MD5_CTX *c);
unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md) unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2))); __attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
void MD5_Transform(MD5_CTX *c, const unsigned char *b); void MD5_Transform(MD5_CTX *c, const unsigned char *b);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ripemd.c,v 1.18 2024/03/28 23:54:15 joshua Exp $ */ /* $OpenBSD: ripemd.c,v 1.19 2024/06/01 07:36:16 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -483,14 +483,10 @@ RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c)
LCRYPTO_ALIAS(RIPEMD160_Final); LCRYPTO_ALIAS(RIPEMD160_Final);
unsigned char * unsigned char *
RIPEMD160(const unsigned char *d, size_t n, RIPEMD160(const unsigned char *d, size_t n, unsigned char *md)
unsigned char *md)
{ {
RIPEMD160_CTX c; RIPEMD160_CTX c;
static unsigned char m[RIPEMD160_DIGEST_LENGTH];
if (md == NULL)
md = m;
if (!RIPEMD160_Init(&c)) if (!RIPEMD160_Init(&c))
return NULL; return NULL;
RIPEMD160_Update(&c, d, n); RIPEMD160_Update(&c, d, n);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ripemd.h,v 1.15 2023/07/08 06:52:56 jsing Exp $ */ /* $OpenBSD: ripemd.h,v 1.19 2024/06/01 18:42:49 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -61,6 +61,10 @@
#ifndef HEADER_RIPEMD_H #ifndef HEADER_RIPEMD_H
#define HEADER_RIPEMD_H #define HEADER_RIPEMD_H
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__OpenBSD__)
#define __bounded__(x, y, z)
#endif
#include <openssl/opensslconf.h> #include <openssl/opensslconf.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -92,10 +96,13 @@ typedef struct RIPEMD160state_st {
} RIPEMD160_CTX; } RIPEMD160_CTX;
int RIPEMD160_Init(RIPEMD160_CTX *c); int RIPEMD160_Init(RIPEMD160_CTX *c);
int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3)));
int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c);
unsigned char *RIPEMD160(const unsigned char *d, size_t n, unsigned char *RIPEMD160(const unsigned char *d, size_t n,
unsigned char *md); unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b); void RIPEMD160_Transform(RIPEMD160_CTX *c, const unsigned char *b);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -1,4 +1,4 @@
/* $OpenBSD: sha.h,v 1.22 2023/07/08 07:08:11 jsing Exp $ */ /* $OpenBSD: sha.h,v 1.25 2024/06/01 08:11:44 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -102,7 +102,8 @@ int SHA1_Update(SHA_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3))); __attribute__ ((__bounded__(__buffer__, 2, 3)));
int SHA1_Final(unsigned char *md, SHA_CTX *c); int SHA1_Final(unsigned char *md, SHA_CTX *c);
unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md) unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2))); __attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
void SHA1_Transform(SHA_CTX *c, const unsigned char *data); void SHA1_Transform(SHA_CTX *c, const unsigned char *data);
#endif #endif
@ -125,13 +126,15 @@ int SHA224_Update(SHA256_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3))); __attribute__ ((__bounded__(__buffer__, 2, 3)));
int SHA224_Final(unsigned char *md, SHA256_CTX *c); int SHA224_Final(unsigned char *md, SHA256_CTX *c);
unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md) unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2))); __attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
int SHA256_Init(SHA256_CTX *c); int SHA256_Init(SHA256_CTX *c);
int SHA256_Update(SHA256_CTX *c, const void *data, size_t len) int SHA256_Update(SHA256_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3))); __attribute__ ((__bounded__(__buffer__, 2, 3)));
int SHA256_Final(unsigned char *md, SHA256_CTX *c); int SHA256_Final(unsigned char *md, SHA256_CTX *c);
unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md) unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2))); __attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); void SHA256_Transform(SHA256_CTX *c, const unsigned char *data);
#endif #endif
@ -172,13 +175,15 @@ int SHA384_Update(SHA512_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3))); __attribute__ ((__bounded__(__buffer__, 2, 3)));
int SHA384_Final(unsigned char *md, SHA512_CTX *c); int SHA384_Final(unsigned char *md, SHA512_CTX *c);
unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md) unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2))); __attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
int SHA512_Init(SHA512_CTX *c); int SHA512_Init(SHA512_CTX *c);
int SHA512_Update(SHA512_CTX *c, const void *data, size_t len) int SHA512_Update(SHA512_CTX *c, const void *data, size_t len)
__attribute__ ((__bounded__(__buffer__, 2, 3))); __attribute__ ((__bounded__(__buffer__, 2, 3)));
int SHA512_Final(unsigned char *md, SHA512_CTX *c); int SHA512_Final(unsigned char *md, SHA512_CTX *c);
unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md) unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2))); __attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); void SHA512_Transform(SHA512_CTX *c, const unsigned char *data);
#endif #endif

View File

@ -1,4 +1,4 @@
/* $OpenBSD: sha1.c,v 1.14 2024/03/28 07:06:12 jsing Exp $ */ /* $OpenBSD: sha1.c,v 1.15 2024/06/01 07:36:16 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -496,10 +496,6 @@ unsigned char *
SHA1(const unsigned char *d, size_t n, unsigned char *md) SHA1(const unsigned char *d, size_t n, unsigned char *md)
{ {
SHA_CTX c; SHA_CTX c;
static unsigned char m[SHA_DIGEST_LENGTH];
if (md == NULL)
md = m;
if (!SHA1_Init(&c)) if (!SHA1_Init(&c))
return NULL; return NULL;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: sha256.c,v 1.31 2024/03/28 04:23:02 jsing Exp $ */ /* $OpenBSD: sha256.c,v 1.32 2024/06/01 07:36:16 tb Exp $ */
/* ==================================================================== /* ====================================================================
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
* *
@ -317,10 +317,6 @@ unsigned char *
SHA224(const unsigned char *d, size_t n, unsigned char *md) SHA224(const unsigned char *d, size_t n, unsigned char *md)
{ {
SHA256_CTX c; SHA256_CTX c;
static unsigned char m[SHA224_DIGEST_LENGTH];
if (md == NULL)
md = m;
SHA224_Init(&c); SHA224_Init(&c);
SHA256_Update(&c, d, n); SHA256_Update(&c, d, n);
@ -479,10 +475,6 @@ unsigned char *
SHA256(const unsigned char *d, size_t n, unsigned char *md) SHA256(const unsigned char *d, size_t n, unsigned char *md)
{ {
SHA256_CTX c; SHA256_CTX c;
static unsigned char m[SHA256_DIGEST_LENGTH];
if (md == NULL)
md = m;
SHA256_Init(&c); SHA256_Init(&c);
SHA256_Update(&c, d, n); SHA256_Update(&c, d, n);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: sha512.c,v 1.41 2023/07/08 12:24:10 beck Exp $ */ /* $OpenBSD: sha512.c,v 1.42 2024/06/01 07:36:16 tb Exp $ */
/* ==================================================================== /* ====================================================================
* Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. * Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved.
* *
@ -345,10 +345,6 @@ unsigned char *
SHA384(const unsigned char *d, size_t n, unsigned char *md) SHA384(const unsigned char *d, size_t n, unsigned char *md)
{ {
SHA512_CTX c; SHA512_CTX c;
static unsigned char m[SHA384_DIGEST_LENGTH];
if (md == NULL)
md = m;
SHA384_Init(&c); SHA384_Init(&c);
SHA512_Update(&c, d, n); SHA512_Update(&c, d, n);
@ -498,10 +494,6 @@ unsigned char *
SHA512(const unsigned char *d, size_t n, unsigned char *md) SHA512(const unsigned char *d, size_t n, unsigned char *md)
{ {
SHA512_CTX c; SHA512_CTX c;
static unsigned char m[SHA512_DIGEST_LENGTH];
if (md == NULL)
md = m;
SHA512_Init(&c); SHA512_Init(&c);
SHA512_Update(&c, d, n); SHA512_Update(&c, d, n);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: whirlpool.c,v 1.2 2024/03/30 03:45:47 joshua Exp $ */ /* $OpenBSD: whirlpool.c,v 1.3 2024/06/01 07:36:17 tb Exp $ */
/** /**
* The Whirlpool hashing function. * The Whirlpool hashing function.
* *
@ -846,10 +846,7 @@ unsigned char *
WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md) WHIRLPOOL(const void *inp, size_t bytes, unsigned char *md)
{ {
WHIRLPOOL_CTX ctx; WHIRLPOOL_CTX ctx;
static unsigned char m[WHIRLPOOL_DIGEST_LENGTH];
if (md == NULL)
md = m;
WHIRLPOOL_Init(&ctx); WHIRLPOOL_Init(&ctx);
WHIRLPOOL_Update(&ctx, inp, bytes); WHIRLPOOL_Update(&ctx, inp, bytes);
WHIRLPOOL_Final(md, &ctx); WHIRLPOOL_Final(md, &ctx);

View File

@ -1,10 +1,14 @@
/* $OpenBSD: whrlpool.h,v 1.5 2014/07/10 22:45:58 jsing Exp $ */ /* $OpenBSD: whrlpool.h,v 1.8 2024/06/01 17:56:44 tb Exp $ */
#include <stddef.h> #include <stddef.h>
#ifndef HEADER_WHRLPOOL_H #ifndef HEADER_WHRLPOOL_H
#define HEADER_WHRLPOOL_H #define HEADER_WHRLPOOL_H
#if !defined(HAVE_ATTRIBUTE__BOUNDED__) && !defined(__OpenBSD__)
#define __bounded__(x, y, z)
#endif
#include <openssl/opensslconf.h> #include <openssl/opensslconf.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -28,10 +32,13 @@ typedef struct {
#ifndef OPENSSL_NO_WHIRLPOOL #ifndef OPENSSL_NO_WHIRLPOOL
int WHIRLPOOL_Init (WHIRLPOOL_CTX *c); int WHIRLPOOL_Init (WHIRLPOOL_CTX *c);
int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes); int WHIRLPOOL_Update (WHIRLPOOL_CTX *c,const void *inp,size_t bytes)
__attribute__ ((__bounded__(__buffer__, 2, 3)));
void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits); void WHIRLPOOL_BitUpdate(WHIRLPOOL_CTX *c,const void *inp,size_t bits);
int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c); int WHIRLPOOL_Final (unsigned char *md,WHIRLPOOL_CTX *c);
unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md); unsigned char *WHIRLPOOL(const void *inp,size_t bytes,unsigned char *md)
__attribute__ ((__bounded__(__buffer__, 1, 2)))
__attribute__ ((__nonnull__(3)));
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -1,4 +1,4 @@
/* $OpenBSD: dev.c,v 1.116 2024/05/24 15:21:35 ratchov Exp $ */ /* $OpenBSD: dev.c,v 1.117 2024/06/01 09:44:10 ratchov Exp $ */
/* /*
* Copyright (c) 2008-2012 Alexandre Ratchov <alex@caoua.org> * Copyright (c) 2008-2012 Alexandre Ratchov <alex@caoua.org>
* *
@ -1054,8 +1054,6 @@ dev_allocbufs(struct dev *d)
int int
dev_open(struct dev *d) dev_open(struct dev *d)
{ {
struct opt *o;
d->mode = d->reqmode; d->mode = d->reqmode;
d->round = d->reqround; d->round = d->reqround;
d->bufsz = d->reqbufsz; d->bufsz = d->reqbufsz;
@ -1078,18 +1076,6 @@ dev_open(struct dev *d)
return 0; return 0;
d->pstate = DEV_INIT; d->pstate = DEV_INIT;
/* add server.device if device is opened after opt_ref() call */
for (o = opt_list; o != NULL; o = o->next) {
if (o->refcnt > 0 && !ctl_find(CTL_OPT_DEV, o, d)) {
ctl_new(CTL_OPT_DEV, o, d,
CTL_SEL, dev_getdisplay(d),
o->name, "server", -1, "device",
d->name, -1, 1, o->dev == d);
d->refcnt++;
}
}
return 1; return 1;
} }
@ -1164,14 +1150,6 @@ dev_freebufs(struct dev *d)
void void
dev_close(struct dev *d) dev_close(struct dev *d)
{ {
struct opt *o;
/* remove server.device entries */
for (o = opt_list; o != NULL; o = o->next) {
if (ctl_del(CTL_OPT_DEV, o, d))
d->refcnt--;
}
d->pstate = DEV_CFG; d->pstate = DEV_CFG;
dev_sio_close(d); dev_sio_close(d);
dev_freebufs(d); dev_freebufs(d);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: sshd.c,v 1.604 2024/05/31 09:01:08 djm Exp $ */ /* $OpenBSD: sshd.c,v 1.605 2024/06/01 07:03:37 djm Exp $ */
/* /*
* Copyright (c) 2000, 2001, 2002 Markus Friedl. All rights reserved. * Copyright (c) 2000, 2001, 2002 Markus Friedl. All rights reserved.
* Copyright (c) 2002 Niels Provos. All rights reserved. * Copyright (c) 2002 Niels Provos. All rights reserved.
@ -858,7 +858,7 @@ main(int ac, char **av)
char *config_file_name = _PATH_SERVER_CONFIG_FILE; char *config_file_name = _PATH_SERVER_CONFIG_FILE;
int r, opt, do_dump_cfg = 0, keytype, already_daemon, have_agent = 0; int r, opt, do_dump_cfg = 0, keytype, already_daemon, have_agent = 0;
int sock_in = -1, sock_out = -1, newsock = -1, rexec_argc = 0; int sock_in = -1, sock_out = -1, newsock = -1, rexec_argc = 0;
int config_s[2] = { -1 , -1 }, have_connection_info = 0; int devnull, config_s[2] = { -1 , -1 }, have_connection_info = 0;
char *fp, *line, *logfile = NULL, **rexec_argv = NULL; char *fp, *line, *logfile = NULL, **rexec_argv = NULL;
struct stat sb; struct stat sb;
u_int i, j; u_int i, j;
@ -999,7 +999,16 @@ main(int ac, char **av)
} }
if (!test_flag && !do_dump_cfg && !path_absolute(av[0])) if (!test_flag && !do_dump_cfg && !path_absolute(av[0]))
fatal("sshd requires execution with an absolute path"); fatal("sshd requires execution with an absolute path");
closefrom(REEXEC_DEVCRYPTO_RESERVED_FD);
closefrom(STDERR_FILENO + 1);
/* Reserve fds we'll need later for reexec things */
if ((devnull = open(_PATH_DEVNULL, O_RDWR)) == -1)
fatal("open %s: %s", _PATH_DEVNULL, strerror(errno));
while (devnull < REEXEC_MIN_FREE_FD) {
if ((devnull = dup(devnull)) == -1)
fatal("dup %s: %s", _PATH_DEVNULL, strerror(errno));
}
#ifdef WITH_OPENSSL #ifdef WITH_OPENSSL
OpenSSL_add_all_algorithms(); OpenSSL_add_all_algorithms();
@ -1368,22 +1377,25 @@ main(int ac, char **av)
sock_in, sock_out, newsock, startup_pipe, config_s[0], config_s[1]); sock_in, sock_out, newsock, startup_pipe, config_s[0], config_s[1]);
if (!inetd_flag) { if (!inetd_flag) {
if (dup2(newsock, STDIN_FILENO) == -1) if (dup2(newsock, STDIN_FILENO) == -1)
debug3("dup2 stdin: %s", strerror(errno)); fatal("dup2 stdin: %s", strerror(errno));
if (dup2(STDIN_FILENO, STDOUT_FILENO) == -1) if (dup2(STDIN_FILENO, STDOUT_FILENO) == -1)
debug3("dup2 stdout: %s", strerror(errno)); fatal("dup2 stdout: %s", strerror(errno));
if (newsock > STDOUT_FILENO)
close(newsock);
} }
if (config_s[1] != REEXEC_CONFIG_PASS_FD) { if (config_s[1] != REEXEC_CONFIG_PASS_FD) {
if (dup2(config_s[1], REEXEC_CONFIG_PASS_FD) == -1) if (dup2(config_s[1], REEXEC_CONFIG_PASS_FD) == -1)
debug3("dup2 config_s: %s", strerror(errno)); fatal("dup2 config_s: %s", strerror(errno));
close(config_s[1]); close(config_s[1]);
} }
if (startup_pipe == -1) if (startup_pipe == -1)
close(REEXEC_STARTUP_PIPE_FD); close(REEXEC_STARTUP_PIPE_FD);
else if (startup_pipe != REEXEC_STARTUP_PIPE_FD) { else if (startup_pipe != REEXEC_STARTUP_PIPE_FD) {
if (dup2(startup_pipe, REEXEC_STARTUP_PIPE_FD) == -1) if (dup2(startup_pipe, REEXEC_STARTUP_PIPE_FD) == -1)
debug3("dup2 startup_p: %s", strerror(errno)); fatal("dup2 startup_p: %s", strerror(errno));
close(startup_pipe); close(startup_pipe);
} }
closefrom(REEXEC_MIN_FREE_FD);
ssh_signal(SIGHUP, SIG_IGN); /* avoid reset to SIG_DFL */ ssh_signal(SIGHUP, SIG_IGN); /* avoid reset to SIG_DFL */
execv(rexec_argv[0], rexec_argv); execv(rexec_argv[0], rexec_argv);