Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3eeda15eb9 | ||
|
|
8e4bd6ebdb | ||
|
|
aab12549a9 | ||
|
|
be8026caf9 | ||
|
|
7d5b6c7ec3 | ||
|
|
d58ae05bb7 | ||
|
|
3b4adf2018 | ||
|
|
ef95df4089 | ||
|
|
de4bcb51c8 | ||
|
|
4b8d141ec1 | ||
|
|
d76b267511 | ||
|
|
6ebc4dd77a | ||
|
|
38df39ecf2 | ||
|
|
5e07dee272 | ||
|
|
fb071011fb | ||
|
|
729a26a978 | ||
|
|
33c5f384ae | ||
|
|
fe8d28a7eb | ||
|
|
11f348196b | ||
|
|
19bcb2d90c | ||
|
|
66878e12a2 | ||
|
|
ff2cd1dd57 | ||
|
|
2c12ae8cf9 | ||
|
|
c7fda60118 | ||
|
|
7cf4dc414d | ||
|
|
8513f4d30a |
@@ -6,10 +6,6 @@ master :
|
||||
[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:openssh)
|
||||
[](https://scan.coverity.com/projects/openssh-portable)
|
||||
|
||||
9.8 :
|
||||
[](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_8)
|
||||
[](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_8)
|
||||
|
||||
9.7 :
|
||||
[](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_7)
|
||||
[](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_7)
|
||||
9.9 :
|
||||
[](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_9)
|
||||
[](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_9)
|
||||
|
||||
@@ -17,9 +17,9 @@ jobs:
|
||||
target:
|
||||
- ubuntu-20.04
|
||||
- ubuntu-22.04
|
||||
- macos-12
|
||||
- macos-13
|
||||
- macos-14
|
||||
- macos-15
|
||||
- windows-2019
|
||||
- windows-2022
|
||||
config: [default]
|
||||
@@ -100,9 +100,9 @@ jobs:
|
||||
- { target: ubuntu-22.04, config: selinux }
|
||||
- { target: ubuntu-22.04, config: kitchensink }
|
||||
- { target: ubuntu-22.04, config: without-openssl }
|
||||
- { target: macos-12, config: pam }
|
||||
- { target: macos-13, config: pam }
|
||||
- { target: macos-14, config: pam }
|
||||
- { target: macos-15, config: pam }
|
||||
runs-on: ${{ matrix.target }}
|
||||
steps:
|
||||
- name: set cygwin git params
|
||||
|
||||
+1
-1
@@ -267,7 +267,7 @@ $(MANPAGES): $(MANPAGES_IN)
|
||||
$(FIXPATHSCMD) $${manpage} | $(FIXALGORITHMSCMD) > $@; \
|
||||
fi
|
||||
|
||||
$(CONFIGFILES): $(CONFIGFILES_IN)
|
||||
$(CONFIGFILES): $(CONFIGFILES_IN) Makefile
|
||||
conffile=`echo $@ | sed 's/.out$$//'`; \
|
||||
$(FIXPATHSCMD) $(srcdir)/$${conffile} > $@
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
See https://www.openssh.com/releasenotes.html#9.9p1 for the release
|
||||
See https://www.openssh.com/releasenotes.html#9.9p2 for the release
|
||||
notes.
|
||||
|
||||
Please read https://www.openssh.com/report.html for bug reporting
|
||||
|
||||
+15
-3
@@ -363,10 +363,22 @@
|
||||
don't. */
|
||||
#undef HAVE_DECL_HOWMANY
|
||||
|
||||
/* Define to 1 if you have the declaration of `htole64', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_HTOLE64
|
||||
|
||||
/* Define to 1 if you have the declaration of `h_errno', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_H_ERRNO
|
||||
|
||||
/* Define to 1 if you have the declaration of `le32toh', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_LE32TOH
|
||||
|
||||
/* Define to 1 if you have the declaration of `le64toh', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_LE64TOH
|
||||
|
||||
/* Define to 1 if you have the declaration of `loginfailed', and to 0 if you
|
||||
don't. */
|
||||
#undef HAVE_DECL_LOGINFAILED
|
||||
@@ -1405,9 +1417,6 @@
|
||||
/* define if you have struct timeval */
|
||||
#undef HAVE_STRUCT_TIMEVAL
|
||||
|
||||
/* Define to 1 if you have the `swap32' function. */
|
||||
#undef HAVE_SWAP32
|
||||
|
||||
/* Define to 1 if you have the `sysconf' function. */
|
||||
#undef HAVE_SYSCONF
|
||||
|
||||
@@ -1739,6 +1748,9 @@
|
||||
/* Set this to your mail directory if you do not have _PATH_MAILDIR */
|
||||
#undef MAIL_DIRECTORY
|
||||
|
||||
/* Define if your compiler lacks __builtin_popcount */
|
||||
#undef MISSING_BUILTIN_POPCOUNT
|
||||
|
||||
/* Need setpgrp to for controlling tty */
|
||||
#undef NEED_SETPGRP
|
||||
|
||||
|
||||
@@ -11325,6 +11325,65 @@ then :
|
||||
fi
|
||||
|
||||
|
||||
ac_fn_check_decl "$LINENO" "le32toh" "ac_cv_have_decl_le32toh" "
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#ifdef HAVE_ENDIAN_H
|
||||
# include <endian.h>
|
||||
#endif
|
||||
|
||||
" "$ac_c_undeclared_builtin_options" "CFLAGS"
|
||||
if test "x$ac_cv_have_decl_le32toh" = xyes
|
||||
then :
|
||||
ac_have_decl=1
|
||||
else $as_nop
|
||||
ac_have_decl=0
|
||||
fi
|
||||
printf "%s\n" "#define HAVE_DECL_LE32TOH $ac_have_decl" >>confdefs.h
|
||||
ac_fn_check_decl "$LINENO" "le64toh" "ac_cv_have_decl_le64toh" "
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#ifdef HAVE_ENDIAN_H
|
||||
# include <endian.h>
|
||||
#endif
|
||||
|
||||
" "$ac_c_undeclared_builtin_options" "CFLAGS"
|
||||
if test "x$ac_cv_have_decl_le64toh" = xyes
|
||||
then :
|
||||
ac_have_decl=1
|
||||
else $as_nop
|
||||
ac_have_decl=0
|
||||
fi
|
||||
printf "%s\n" "#define HAVE_DECL_LE64TOH $ac_have_decl" >>confdefs.h
|
||||
ac_fn_check_decl "$LINENO" "htole64" "ac_cv_have_decl_htole64" "
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#ifdef HAVE_ENDIAN_H
|
||||
# include <endian.h>
|
||||
#endif
|
||||
|
||||
" "$ac_c_undeclared_builtin_options" "CFLAGS"
|
||||
if test "x$ac_cv_have_decl_htole64" = xyes
|
||||
then :
|
||||
ac_have_decl=1
|
||||
else $as_nop
|
||||
ac_have_decl=0
|
||||
fi
|
||||
printf "%s\n" "#define HAVE_DECL_HTOLE64 $ac_have_decl" >>confdefs.h
|
||||
|
||||
|
||||
# On some platforms (eg SunOS4) sys/audit.h requires sys/[time|types|label.h]
|
||||
# to be included first.
|
||||
ac_fn_c_check_header_compile "$LINENO" "sys/audit.h" "ac_cv_header_sys_audit_h" "
|
||||
@@ -16639,12 +16698,6 @@ if test "x$ac_cv_func_strtoull" = xyes
|
||||
then :
|
||||
printf "%s\n" "#define HAVE_STRTOULL 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
ac_fn_c_check_func "$LINENO" "swap32" "ac_cv_func_swap32"
|
||||
if test "x$ac_cv_func_swap32" = xyes
|
||||
then :
|
||||
printf "%s\n" "#define HAVE_SWAP32 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
ac_fn_c_check_func "$LINENO" "sysconf" "ac_cv_func_sysconf"
|
||||
if test "x$ac_cv_func_sysconf" = xyes
|
||||
@@ -16732,6 +16785,40 @@ then :
|
||||
fi
|
||||
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether compiler supports __builtin_popcount" >&5
|
||||
printf %s "checking whether compiler supports __builtin_popcount... " >&6; }
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
int x = 123, y;
|
||||
y = __builtin_popcount(123);
|
||||
exit(y == 6 ? 0 : -1);
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"
|
||||
then :
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
printf "%s\n" "yes" >&6; }
|
||||
else $as_nop
|
||||
|
||||
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
printf "%s\n" "no" >&6; }
|
||||
|
||||
printf "%s\n" "#define MISSING_BUILTIN_POPCOUNT 1" >>confdefs.h
|
||||
|
||||
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.beam \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
|
||||
ac_fn_check_decl "$LINENO" "bzero" "ac_cv_have_decl_bzero" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
|
||||
if test "x$ac_cv_have_decl_bzero" = xyes
|
||||
then :
|
||||
|
||||
+25
-1
@@ -536,6 +536,18 @@ AC_CHECK_HEADERS([ \
|
||||
wchar.h \
|
||||
])
|
||||
|
||||
AC_CHECK_DECLS([le32toh, le64toh, htole64], [], [], [
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
# include <sys/types.h>
|
||||
#endif
|
||||
#ifdef HAVE_STDINT_H
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
#ifdef HAVE_ENDIAN_H
|
||||
# include <endian.h>
|
||||
#endif
|
||||
])
|
||||
|
||||
# On some platforms (eg SunOS4) sys/audit.h requires sys/[time|types|label.h]
|
||||
# to be included first.
|
||||
AC_CHECK_HEADERS([sys/audit.h], [], [], [
|
||||
@@ -2013,7 +2025,6 @@ AC_CHECK_FUNCS([ \
|
||||
strtoll \
|
||||
strtoul \
|
||||
strtoull \
|
||||
swap32 \
|
||||
sysconf \
|
||||
tcgetpgrp \
|
||||
timegm \
|
||||
@@ -2030,6 +2041,19 @@ AC_CHECK_FUNCS([ \
|
||||
warn \
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING([whether compiler supports __builtin_popcount])
|
||||
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <stdlib.h>
|
||||
]],
|
||||
[[ int x = 123, y;
|
||||
y = __builtin_popcount(123);
|
||||
exit(y == 6 ? 0 : -1); ]])],
|
||||
[ AC_MSG_RESULT([yes]) ], [
|
||||
AC_MSG_RESULT([no])
|
||||
AC_DEFINE([MISSING_BUILTIN_POPCOUNT], [1], [Define if your compiler lacks __builtin_popcount])
|
||||
]
|
||||
)
|
||||
|
||||
AC_CHECK_DECLS([bzero, memmem])
|
||||
|
||||
dnl Wide character support.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
%global ver 9.9p1
|
||||
%global ver 9.9p2
|
||||
%global rel 1%{?dist}
|
||||
|
||||
# OpenSSH privilege separation requires a user & group ID
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
|
||||
Name: openssh
|
||||
Version: 9.9p1
|
||||
Version: 9.9p2
|
||||
URL: https://www.openssh.com/
|
||||
Release: 1
|
||||
Source0: openssh-%{version}.tar.gz
|
||||
|
||||
@@ -646,6 +646,46 @@ struct winsize {
|
||||
# endif /* WORDS_BIGENDIAN */
|
||||
#endif /* BYTE_ORDER */
|
||||
|
||||
#if (defined(HAVE_DECL_LE32TOH) && HAVE_DECL_LE32TOH == 0) || \
|
||||
(defined(HAVE_DECL_LE64TOH) && HAVE_DECL_LE64TOH == 0) || \
|
||||
(defined(HAVE_DECL_HTOLE64) && HAVE_DECL_HTOLE64 == 0)
|
||||
# define openssh_swap32(v) \
|
||||
(uint32_t)(((uint32_t)(v) & 0xff) << 24 | \
|
||||
((uint32_t)(v) & 0xff00) << 8 | \
|
||||
((uint32_t)(v) & 0xff0000) >> 8 | \
|
||||
((uint32_t)(v) & 0xff000000) >> 24)
|
||||
# define openssh_swap64(v) \
|
||||
(uint64_t)((((uint64_t)(v) & 0xff) << 56) | \
|
||||
((uint64_t)(v) & 0xff00ULL) << 40 | \
|
||||
((uint64_t)(v) & 0xff0000ULL) << 24 | \
|
||||
((uint64_t)(v) & 0xff000000ULL) << 8 | \
|
||||
((uint64_t)(v) & 0xff00000000ULL) >> 8 | \
|
||||
((uint64_t)(v) & 0xff0000000000ULL) >> 24 | \
|
||||
((uint64_t)(v) & 0xff000000000000ULL) >> 40 | \
|
||||
((uint64_t)(v) & 0xff00000000000000ULL) >> 56)
|
||||
# ifdef WORDS_BIGENDIAN
|
||||
# if defined(HAVE_DECL_LE32TOH) && HAVE_DECL_LE32TOH == 0
|
||||
# define le32toh(v) (openssh_swap32(v))
|
||||
# endif
|
||||
# if defined(HAVE_DECL_LE64TOH) && HAVE_DECL_LE64TOH == 0
|
||||
# define le64toh(v) (openssh_swap64(v))
|
||||
# endif
|
||||
# if defined(HAVE_DECL_HTOLE64) && HAVE_DECL_HTOLE64 == 0
|
||||
# define htole64(v) (openssh_swap64(v))
|
||||
# endif
|
||||
# else
|
||||
# if defined(HAVE_DECL_LE32TOH) && HAVE_DECL_LE32TOH == 0
|
||||
# define le32toh(v) ((uint32_t)v)
|
||||
# endif
|
||||
# if defined(HAVE_DECL_LE64TOH) && HAVE_DECL_LE64TOH == 0
|
||||
# define le64toh(v) ((uint64_t)v)
|
||||
# endif
|
||||
# if defined(HAVE_DECL_HTOLE64) && HAVE_DECL_HTOLE64 == 0
|
||||
# define htole64(v) ((uint64_t)v)
|
||||
# endif
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Function replacement / compatibility hacks */
|
||||
|
||||
#if !defined(HAVE_GETADDRINFO) && (defined(HAVE_OGETADDRINFO) || defined(HAVE_NGETADDRINFO))
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#ifdef GSSAPI
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
|
||||
+4
-1
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: kexmlkem768x25519.c,v 1.1 2024/09/02 12:13:56 djm Exp $ */
|
||||
/* $OpenBSD: kexmlkem768x25519.c,v 1.2 2024/10/27 02:06:59 djm Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2023 Markus Friedl. All rights reserved.
|
||||
*
|
||||
@@ -34,6 +34,9 @@
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#ifdef HAVE_ENDIAN_H
|
||||
# include <endian.h>
|
||||
#endif
|
||||
|
||||
#include "sshkey.h"
|
||||
#include "kex.h"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: krl.c,v 1.59 2023/07/17 05:22:30 djm Exp $ */
|
||||
/* $OpenBSD: krl.c,v 1.60 2025/02/18 08:02:48 djm Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2012 Damien Miller <djm@mindrot.org>
|
||||
*
|
||||
@@ -674,6 +674,7 @@ revoked_certs_generate(struct revoked_certs *rc, struct sshbuf *buf)
|
||||
break;
|
||||
case KRL_SECTION_CERT_SERIAL_BITMAP:
|
||||
if (rs->lo - bitmap_start > INT_MAX) {
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
error_f("insane bitmap gap");
|
||||
goto out;
|
||||
}
|
||||
@@ -1059,6 +1060,7 @@ ssh_krl_from_blob(struct sshbuf *buf, struct ssh_krl **krlp)
|
||||
}
|
||||
|
||||
if ((krl = ssh_krl_init()) == NULL) {
|
||||
r = SSH_ERR_ALLOC_FAIL;
|
||||
error_f("alloc failed");
|
||||
goto out;
|
||||
}
|
||||
|
||||
+11
-5
@@ -1,4 +1,5 @@
|
||||
/* $OpenBSD: libcrux_mlkem768_sha3.h,v 1.1 2024/09/02 12:13:56 djm Exp $ */
|
||||
/* $OpenBSD: libcrux_mlkem768_sha3.h,v 1.2 2024/10/27 02:06:01 djm Exp $ */
|
||||
|
||||
/* Extracted from libcrux revision 84c5d87b3092c59294345aa269ceefe0eb97cc35 */
|
||||
|
||||
/*
|
||||
@@ -160,25 +161,30 @@ static inline void Eurydice_slice_to_array3(uint8_t *dst_tag, char *dst_ok,
|
||||
// CORE STUFF (conversions, endianness, ...)
|
||||
|
||||
static inline void core_num__u64_9__to_le_bytes(uint64_t v, uint8_t buf[8]) {
|
||||
v = htole64(v);
|
||||
memcpy(buf, &v, sizeof(v));
|
||||
}
|
||||
static inline uint64_t core_num__u64_9__from_le_bytes(uint8_t buf[8]) {
|
||||
uint64_t v;
|
||||
memcpy(&v, buf, sizeof(v));
|
||||
return v;
|
||||
return le64toh(v);
|
||||
}
|
||||
|
||||
static inline uint32_t core_num__u32_8__from_le_bytes(uint8_t buf[4]) {
|
||||
uint32_t v;
|
||||
memcpy(&v, buf, sizeof(v));
|
||||
return v;
|
||||
return le32toh(v);
|
||||
}
|
||||
|
||||
static inline uint32_t core_num__u8_6__count_ones(uint8_t x0) {
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER)
|
||||
return __popcnt(x0);
|
||||
#else
|
||||
#elif !defined(MISSING_BUILTIN_POPCOUNT)
|
||||
return __builtin_popcount(x0);
|
||||
#else
|
||||
const uint8_t v[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
|
||||
return v[x0 & 0xf] + v[(x0 >> 4) & 0xf];
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
+4
-4
@@ -614,7 +614,7 @@ line_abbrevname(char *dst, const char *src, int dstsize)
|
||||
** into account.
|
||||
**/
|
||||
|
||||
#if defined(USE_UTMP) || defined (USE_WTMP) || defined (USE_LOGIN)
|
||||
#if defined(USE_BTMP) || defined(USE_UTMP) || defined (USE_WTMP) || defined (USE_LOGIN)
|
||||
|
||||
/* build the utmp structure */
|
||||
void
|
||||
@@ -698,7 +698,7 @@ construct_utmp(struct logininfo *li,
|
||||
}
|
||||
# endif
|
||||
}
|
||||
#endif /* USE_UTMP || USE_WTMP || USE_LOGIN */
|
||||
#endif /* USE_BTMP || USE_UTMP || USE_WTMP || USE_LOGIN */
|
||||
|
||||
/**
|
||||
** utmpx utility functions
|
||||
@@ -723,7 +723,7 @@ set_utmpx_time(struct logininfo *li, struct utmpx *utx)
|
||||
void
|
||||
construct_utmpx(struct logininfo *li, struct utmpx *utx)
|
||||
{
|
||||
# ifdef HAVE_ADDR_V6_IN_UTMP
|
||||
# ifdef HAVE_ADDR_V6_IN_UTMPX
|
||||
struct sockaddr_in6 *sa6;
|
||||
# endif
|
||||
memset(utx, '\0', sizeof(*utx));
|
||||
@@ -769,7 +769,7 @@ construct_utmpx(struct logininfo *li, struct utmpx *utx)
|
||||
if (li->hostaddr.sa.sa_family == AF_INET)
|
||||
utx->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr;
|
||||
# endif
|
||||
# ifdef HAVE_ADDR_V6_IN_UTMP
|
||||
# ifdef HAVE_ADDR_V6_IN_UTMPX
|
||||
/* this is just a 128-bit IPv6 address */
|
||||
if (li->hostaddr.sa.sa_family == AF_INET6) {
|
||||
sa6 = ((struct sockaddr_in6 *)&li->hostaddr.sa);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: misc.c,v 1.196 2024/06/06 17:15:25 djm Exp $ */
|
||||
/* $OpenBSD: misc.c,v 1.197 2024/09/25 01:24:04 djm Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2000 Markus Friedl. All rights reserved.
|
||||
* Copyright (c) 2005-2020 Damien Miller. All rights reserved.
|
||||
@@ -107,6 +107,27 @@ rtrim(char *s)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* returns pointer to character after 'prefix' in 's' or otherwise NULL
|
||||
* if the prefix is not present.
|
||||
*/
|
||||
const char *
|
||||
strprefix(const char *s, const char *prefix, int ignorecase)
|
||||
{
|
||||
size_t prefixlen;
|
||||
|
||||
if ((prefixlen = strlen(prefix)) == 0)
|
||||
return s;
|
||||
if (ignorecase) {
|
||||
if (strncasecmp(s, prefix, prefixlen) != 0)
|
||||
return NULL;
|
||||
} else {
|
||||
if (strncmp(s, prefix, prefixlen) != 0)
|
||||
return NULL;
|
||||
}
|
||||
return s + prefixlen;
|
||||
}
|
||||
|
||||
/* set/unset filedescriptor to non-blocking */
|
||||
int
|
||||
set_nonblock(int fd)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: misc.h,v 1.109 2024/06/06 17:15:25 djm Exp $ */
|
||||
/* $OpenBSD: misc.h,v 1.110 2024/09/25 01:24:04 djm Exp $ */
|
||||
|
||||
/*
|
||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||
@@ -56,6 +56,7 @@ struct ForwardOptions {
|
||||
char *chop(char *);
|
||||
void rtrim(char *);
|
||||
void skip_space(char **);
|
||||
const char *strprefix(const char *, const char *, int);
|
||||
char *strdelim(char **);
|
||||
char *strdelimw(char **);
|
||||
int set_nonblock(int);
|
||||
|
||||
+20
-5
@@ -1,9 +1,10 @@
|
||||
#!/bin/sh
|
||||
# $OpenBSD: mlkem768.sh,v 1.2 2024/09/04 05:11:33 djm Exp $
|
||||
# $OpenBSD: mlkem768.sh,v 1.3 2024/10/27 02:06:01 djm Exp $
|
||||
# Placed in the Public Domain.
|
||||
#
|
||||
|
||||
WANT_LIBCRUX_REVISION="origin/main"
|
||||
#WANT_LIBCRUX_REVISION="origin/main"
|
||||
WANT_LIBCRUX_REVISION="84c5d87b3092c59294345aa269ceefe0eb97cc35"
|
||||
|
||||
FILES="
|
||||
libcrux/libcrux-ml-kem/cg/eurydice_glue.h
|
||||
@@ -47,6 +48,12 @@ echo '#define KRML_NOINLINE __attribute__((noinline, unused))'
|
||||
echo '#define KRML_HOST_EPRINTF(...)'
|
||||
echo '#define KRML_HOST_EXIT(x) fatal_f("internal error")'
|
||||
echo
|
||||
|
||||
__builtin_popcount_replacement='
|
||||
const uint8_t v[16] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
|
||||
return v[x0 & 0xf] + v[(x0 >> 4) & 0xf];
|
||||
'
|
||||
|
||||
for i in $FILES; do
|
||||
echo "/* from $i */"
|
||||
# Changes to all files:
|
||||
@@ -56,11 +63,19 @@ for i in $FILES; do
|
||||
-e 's/[ ]*$//' \
|
||||
$i | \
|
||||
case "$i" in
|
||||
# XXX per-file handling goes here.
|
||||
*/libcrux-ml-kem/cg/eurydice_glue.h)
|
||||
# Replace endian functions with versions that work.
|
||||
perl -0777 -pe 's/(static inline void core_num__u64_9__to_le_bytes.*\n)([^}]*\n)/\1 v = htole64(v);\n\2/' |
|
||||
perl -0777 -pe 's/(static inline uint64_t core_num__u64_9__from_le_bytes.*?)return v;/\1return le64toh(v);/s' |
|
||||
perl -0777 -pe 's/(static inline uint32_t core_num__u32_8__from_le_bytes.*?)return v;/\1return le32toh(v);/s' |
|
||||
# Compat for popcount.
|
||||
perl -0777 -pe 's/\#ifdef (_MSC_VER)(.*?return __popcnt\(x0\);)/\#if defined(\1)\2/s' |
|
||||
perl -0777 -pe "s/\\#else(\\n\\s+return __builtin_popcount\\(x0\\);)/\\#elif !defined(MISSING_BUILTIN_POPCOUNT)\\1\\n#else$__builtin_popcount_replacement/s"
|
||||
;;
|
||||
# Default: pass through.
|
||||
*)
|
||||
cat
|
||||
;;
|
||||
cat
|
||||
;;
|
||||
esac
|
||||
echo
|
||||
done
|
||||
|
||||
@@ -71,4 +71,4 @@ STANDARDS
|
||||
M. Friedl, N. Provos, and W. Simpson, Diffie-Hellman Group Exchange for
|
||||
the Secure Shell (SSH) Transport Layer Protocol, RFC 4419, March 2006.
|
||||
|
||||
OpenBSD 7.5 April 16, 2022 OpenBSD 7.5
|
||||
OpenBSD 7.6 April 16, 2022 OpenBSD 7.6
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: packet.c,v 1.317 2024/08/23 04:51:00 deraadt Exp $ */
|
||||
/* $OpenBSD: packet.c,v 1.318 2025/02/18 08:02:12 djm Exp $ */
|
||||
/*
|
||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||
@@ -1864,6 +1864,14 @@ ssh_packet_read_poll_seqnr(struct ssh *ssh, u_char *typep, u_int32_t *seqnr_p)
|
||||
if ((r = sshpkt_get_string_direct(ssh, &d, &len)) != 0)
|
||||
return r;
|
||||
DBG(debug("Received SSH2_MSG_PING len %zu", len));
|
||||
if (!ssh->state->after_authentication) {
|
||||
DBG(debug("Won't reply to PING in preauth"));
|
||||
break;
|
||||
}
|
||||
if (ssh_packet_is_rekeying(ssh)) {
|
||||
DBG(debug("Won't reply to PING during KEX"));
|
||||
break;
|
||||
}
|
||||
if ((r = sshpkt_start(ssh, SSH2_MSG_PONG)) != 0 ||
|
||||
(r = sshpkt_put_string(ssh, d, len)) != 0 ||
|
||||
(r = sshpkt_send(ssh)) != 0)
|
||||
|
||||
+23
-5
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: readconf.c,v 1.390 2024/09/15 00:57:36 djm Exp $ */
|
||||
/* $OpenBSD: readconf.c,v 1.392 2024/09/26 23:55:08 djm Exp $ */
|
||||
/*
|
||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||
@@ -710,7 +710,7 @@ match_cfg_line(Options *options, const char *full_line, int *acp, char ***avp,
|
||||
struct passwd *pw, const char *host_arg, const char *original_host,
|
||||
int final_pass, int *want_final_pass, const char *filename, int linenum)
|
||||
{
|
||||
char *arg, *oattrib, *attrib, *cmd, *host, *criteria;
|
||||
char *arg, *oattrib = NULL, *attrib = NULL, *cmd, *host, *criteria;
|
||||
const char *ruser;
|
||||
int r, this_result, result = 1, attributes = 0, negate;
|
||||
|
||||
@@ -731,7 +731,8 @@ match_cfg_line(Options *options, const char *full_line, int *acp, char ***avp,
|
||||
|
||||
debug2("checking match for '%s' host %s originally %s",
|
||||
full_line, host, original_host);
|
||||
while ((oattrib = attrib = argv_next(acp, avp)) != NULL) {
|
||||
while ((attrib = argv_next(acp, avp)) != NULL) {
|
||||
attrib = oattrib = xstrdup(attrib);
|
||||
/* Terminate on comment */
|
||||
if (*attrib == '#') {
|
||||
argv_consume(acp);
|
||||
@@ -777,9 +778,23 @@ match_cfg_line(Options *options, const char *full_line, int *acp, char ***avp,
|
||||
this_result ? "" : "not ", oattrib);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Keep this list in sync with below */
|
||||
if (strprefix(attrib, "host=", 1) != NULL ||
|
||||
strprefix(attrib, "originalhost=", 1) != NULL ||
|
||||
strprefix(attrib, "user=", 1) != NULL ||
|
||||
strprefix(attrib, "localuser=", 1) != NULL ||
|
||||
strprefix(attrib, "localnetwork=", 1) != NULL ||
|
||||
strprefix(attrib, "tagged=", 1) != NULL ||
|
||||
strprefix(attrib, "exec=", 1) != NULL) {
|
||||
arg = strchr(attrib, '=');
|
||||
*(arg++) = '\0';
|
||||
} else {
|
||||
arg = argv_next(acp, avp);
|
||||
}
|
||||
|
||||
/* All other criteria require an argument */
|
||||
if ((arg = argv_next(acp, avp)) == NULL ||
|
||||
*arg == '\0' || *arg == '#') {
|
||||
if (arg == NULL || *arg == '\0' || *arg == '#') {
|
||||
error("Missing Match criteria for %s", attrib);
|
||||
result = -1;
|
||||
goto out;
|
||||
@@ -856,6 +871,8 @@ match_cfg_line(Options *options, const char *full_line, int *acp, char ***avp,
|
||||
criteria == NULL ? "" : criteria,
|
||||
criteria == NULL ? "" : "\"");
|
||||
free(criteria);
|
||||
free(oattrib);
|
||||
oattrib = attrib = NULL;
|
||||
}
|
||||
if (attributes == 0) {
|
||||
error("One or more attributes required for Match");
|
||||
@@ -865,6 +882,7 @@ match_cfg_line(Options *options, const char *full_line, int *acp, char ***avp,
|
||||
out:
|
||||
if (result != -1)
|
||||
debug2("match %sfound", result ? "" : "not ");
|
||||
free(oattrib);
|
||||
free(host);
|
||||
return result;
|
||||
}
|
||||
|
||||
+12
-5
@@ -1,4 +1,4 @@
|
||||
# $OpenBSD: dropbear-kex.sh,v 1.3 2024/06/19 10:10:46 dtucker Exp $
|
||||
# $OpenBSD: dropbear-kex.sh,v 1.4 2025/03/11 07:42:08 dtucker Exp $
|
||||
# Placed in the Public Domain.
|
||||
|
||||
tid="dropbear kex"
|
||||
@@ -10,8 +10,14 @@ fi
|
||||
cp $OBJ/sshd_proxy $OBJ/sshd_proxy.bak
|
||||
|
||||
kex="curve25519-sha256 [email protected]"
|
||||
if $SSH -Q kex | grep 'diffie-hellman-group14-sha1'; then
|
||||
kex="$kex diffie-hellman-group14-sha256 diffie-hellman-group14-sha1"
|
||||
if $SSH -Q kex | grep 'diffie-hellman-group14-sha256' >/dev/null; then
|
||||
kex="$kex diffie-hellman-group14-sha256"
|
||||
fi
|
||||
# There's no flag to query KEX, so if MACs does not contain SHA1, assume
|
||||
# there's also SHA1-based KEX methods either.
|
||||
if $SSH -Q kex | grep 'diffie-hellman-group14-sha1' >/dev/null && \
|
||||
$DBCLIENT -m help hst 2>&1 | grep -- '-sha1' >/dev/null ; then
|
||||
kex="$kex diffie-hellman-group14-sha1"
|
||||
fi
|
||||
|
||||
for k in $kex; do
|
||||
@@ -19,8 +25,9 @@ for k in $kex; do
|
||||
rm -f ${COPY}
|
||||
# dbclient doesn't have switch for kex, so force in server
|
||||
(cat $OBJ/sshd_proxy.bak; echo "KexAlgorithms $k") >$OBJ/sshd_proxy
|
||||
env HOME=$OBJ dbclient -y -i $OBJ/.dropbear/id_ed25519 2>$OBJ/dbclient.log \
|
||||
-J "$OBJ/ssh_proxy.sh" somehost cat ${DATA} > ${COPY}
|
||||
env HOME=$OBJ \
|
||||
${DBCLIENT} -y -i $OBJ/.dropbear/id_ed25519 2>$OBJ/dbclient.log \
|
||||
-J "$OBJ/ssh_proxy.sh" somehost cat ${DATA} > ${COPY}
|
||||
if [ $? -ne 0 ]; then
|
||||
fail "ssh cat $DATA failed"
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $OpenBSD: sshfp-connect.sh,v 1.4 2021/09/01 00:50:27 dtucker Exp $
|
||||
# $OpenBSD: sshfp-connect.sh,v 1.5 2025/03/11 11:46:44 dtucker Exp $
|
||||
# Placed in the Public Domain.
|
||||
|
||||
# This test requires external setup and thus is skipped unless
|
||||
@@ -29,6 +29,12 @@ if ! $SSH -Q key-plain | grep ssh-rsa >/dev/null; then
|
||||
elif [ -z "${TEST_SSH_SSHFP_DOMAIN}" ]; then
|
||||
skip "TEST_SSH_SSHFP_DOMAIN not set."
|
||||
else
|
||||
# Prime any DNS caches and resolvers.
|
||||
for i in sshtest sshtest-sha1 sshtest-sha256; do
|
||||
host -t sshfp ${i}.${TEST_SSH_SSHFP_DOMAIN} >/dev/null 2>&1
|
||||
host -t sshfp ${i}-bad.${TEST_SSH_SSHFP_DOMAIN} >/dev/null 2>&1
|
||||
done
|
||||
|
||||
# Set RSA host key to match fingerprints above.
|
||||
mv $OBJ/sshd_proxy $OBJ/sshd_proxy.orig
|
||||
$SUDO cp $SRC/rsa_openssh.prv $OBJ/host.ssh-rsa
|
||||
|
||||
@@ -229,4 +229,4 @@ CAVEATS
|
||||
requires careful quoting of any characters that have special meaning to
|
||||
the remote shell, such as quote characters.
|
||||
|
||||
OpenBSD 7.5 December 16, 2022 OpenBSD 7.5
|
||||
OpenBSD 7.6 December 16, 2022 OpenBSD 7.6
|
||||
|
||||
+45
-16
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: servconf.c,v 1.418 2024/09/15 03:09:44 djm Exp $ */
|
||||
/* $OpenBSD: servconf.c,v 1.419 2024/09/25 01:24:04 djm Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||
* All rights reserved
|
||||
@@ -1033,7 +1033,7 @@ match_cfg_line(const char *full_line, int *acp, char ***avp,
|
||||
int line, struct connection_info *ci)
|
||||
{
|
||||
int result = 1, attributes = 0, port;
|
||||
char *arg, *attrib;
|
||||
char *arg, *attrib = NULL, *oattrib;
|
||||
|
||||
if (ci == NULL)
|
||||
debug3("checking syntax for 'Match %s'", full_line);
|
||||
@@ -1047,7 +1047,8 @@ match_cfg_line(const char *full_line, int *acp, char ***avp,
|
||||
ci->laddress ? ci->laddress : "(null)", ci->lport);
|
||||
}
|
||||
|
||||
while ((attrib = argv_next(acp, avp)) != NULL) {
|
||||
while ((oattrib = argv_next(acp, avp)) != NULL) {
|
||||
attrib = xstrdup(oattrib);
|
||||
/* Terminate on comment */
|
||||
if (*attrib == '#') {
|
||||
argv_consume(acp); /* mark all arguments consumed */
|
||||
@@ -1062,27 +1063,46 @@ match_cfg_line(const char *full_line, int *acp, char ***avp,
|
||||
*arg != '\0' && *arg != '#')) {
|
||||
error("'all' cannot be combined with other "
|
||||
"Match attributes");
|
||||
return -1;
|
||||
result = -1;
|
||||
goto out;
|
||||
}
|
||||
if (arg != NULL && *arg == '#')
|
||||
argv_consume(acp); /* consume remaining args */
|
||||
return 1;
|
||||
result = 1;
|
||||
goto out;
|
||||
}
|
||||
/* Criterion "invalid-user" also has no argument */
|
||||
if (strcasecmp(attrib, "invalid-user") == 0) {
|
||||
if (ci == NULL)
|
||||
if (ci == NULL) {
|
||||
result = 0;
|
||||
continue;
|
||||
}
|
||||
if (ci->user_invalid == 0)
|
||||
result = 0;
|
||||
else
|
||||
debug("matched invalid-user at line %d", line);
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Keep this list in sync with below */
|
||||
if (strprefix(attrib, "user=", 1) != NULL ||
|
||||
strprefix(attrib, "group=", 1) != NULL ||
|
||||
strprefix(attrib, "host=", 1) != NULL ||
|
||||
strprefix(attrib, "address=", 1) != NULL ||
|
||||
strprefix(attrib, "localaddress=", 1) != NULL ||
|
||||
strprefix(attrib, "localport=", 1) != NULL ||
|
||||
strprefix(attrib, "rdomain=", 1) != NULL) {
|
||||
arg = strchr(attrib, '=');
|
||||
*(arg++) = '\0';
|
||||
} else {
|
||||
arg = argv_next(acp, avp);
|
||||
}
|
||||
|
||||
/* All other criteria require an argument */
|
||||
if ((arg = argv_next(acp, avp)) == NULL ||
|
||||
*arg == '\0' || *arg == '#') {
|
||||
if (arg == NULL || *arg == '\0' || *arg == '#') {
|
||||
error("Missing Match criteria for %s", attrib);
|
||||
return -1;
|
||||
result = -1;
|
||||
goto out;
|
||||
}
|
||||
if (strcasecmp(attrib, "user") == 0) {
|
||||
if (ci == NULL || (ci->test && ci->user == NULL)) {
|
||||
@@ -1105,7 +1125,8 @@ match_cfg_line(const char *full_line, int *acp, char ***avp,
|
||||
match_test_missing_fatal("Group", "user");
|
||||
switch (match_cfg_line_group(arg, line, ci->user)) {
|
||||
case -1:
|
||||
return -1;
|
||||
result = -1;
|
||||
goto out;
|
||||
case 0:
|
||||
result = 0;
|
||||
}
|
||||
@@ -1141,7 +1162,8 @@ match_cfg_line(const char *full_line, int *acp, char ***avp,
|
||||
result = 0;
|
||||
break;
|
||||
case -2:
|
||||
return -1;
|
||||
result = -1;
|
||||
goto out;
|
||||
}
|
||||
} else if (strcasecmp(attrib, "localaddress") == 0){
|
||||
if (ci == NULL || (ci->test && ci->laddress == NULL)) {
|
||||
@@ -1166,13 +1188,15 @@ match_cfg_line(const char *full_line, int *acp, char ***avp,
|
||||
result = 0;
|
||||
break;
|
||||
case -2:
|
||||
return -1;
|
||||
result = -1;
|
||||
goto out;
|
||||
}
|
||||
} else if (strcasecmp(attrib, "localport") == 0) {
|
||||
if ((port = a2port(arg)) == -1) {
|
||||
error("Invalid LocalPort '%s' on Match line",
|
||||
arg);
|
||||
return -1;
|
||||
result = -1;
|
||||
goto out;
|
||||
}
|
||||
if (ci == NULL || (ci->test && ci->lport == -1)) {
|
||||
result = 0;
|
||||
@@ -1200,16 +1224,21 @@ match_cfg_line(const char *full_line, int *acp, char ***avp,
|
||||
debug("user %.100s matched 'RDomain %.100s' at "
|
||||
"line %d", ci->rdomain, arg, line);
|
||||
} else {
|
||||
error("Unsupported Match attribute %s", attrib);
|
||||
return -1;
|
||||
error("Unsupported Match attribute %s", oattrib);
|
||||
result = -1;
|
||||
goto out;
|
||||
}
|
||||
free(attrib);
|
||||
attrib = NULL;
|
||||
}
|
||||
if (attributes == 0) {
|
||||
error("One or more attributes required for Match");
|
||||
return -1;
|
||||
}
|
||||
if (ci != NULL)
|
||||
out:
|
||||
if (ci != NULL && result != -1)
|
||||
debug3("match %sfound", result ? "" : "not ");
|
||||
free(attrib);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -95,4 +95,4 @@ HISTORY
|
||||
AUTHORS
|
||||
Markus Friedl <[email protected]>
|
||||
|
||||
OpenBSD 7.5 July 27, 2021 OpenBSD 7.5
|
||||
OpenBSD 7.6 July 27, 2021 OpenBSD 7.6
|
||||
|
||||
@@ -435,4 +435,4 @@ SEE ALSO
|
||||
T. Ylonen and S. Lehtinen, SSH File Transfer Protocol, draft-ietf-secsh-
|
||||
filexfer-00.txt, January 2001, work in progress material.
|
||||
|
||||
OpenBSD 7.5 December 16, 2022 OpenBSD 7.5
|
||||
OpenBSD 7.6 December 16, 2022 OpenBSD 7.6
|
||||
|
||||
+1
-1
@@ -386,7 +386,7 @@ srclimit_penalise(struct xaddr *addr, int penalty_type)
|
||||
reason = "penalty: connection prohibited by RefuseConnection";
|
||||
break;
|
||||
case SRCLIMIT_PENALTY_GRACE_EXCEEDED:
|
||||
penalty_secs = penalty_cfg.penalty_crash;
|
||||
penalty_secs = penalty_cfg.penalty_grace;
|
||||
reason = "penalty: exceeded LoginGraceTime";
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -206,4 +206,4 @@ AUTHORS
|
||||
created OpenSSH. Markus Friedl contributed the support for SSH protocol
|
||||
versions 1.5 and 2.0.
|
||||
|
||||
OpenBSD 7.5 June 17, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 June 17, 2024 OpenBSD 7.6
|
||||
|
||||
+1
-1
@@ -137,4 +137,4 @@ AUTHORS
|
||||
created OpenSSH. Markus Friedl contributed the support for SSH protocol
|
||||
versions 1.5 and 2.0.
|
||||
|
||||
OpenBSD 7.5 August 10, 2023 OpenBSD 7.5
|
||||
OpenBSD 7.6 August 10, 2023 OpenBSD 7.6
|
||||
|
||||
@@ -1208,6 +1208,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
|
||||
"[email protected]") == 0) {
|
||||
if (*dcsp != NULL) {
|
||||
error_f("%s already set", ext_name);
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
goto out;
|
||||
}
|
||||
if ((r = sshbuf_froms(m, &b)) != 0) {
|
||||
@@ -1217,6 +1218,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
|
||||
while (sshbuf_len(b) != 0) {
|
||||
if (*ndcsp >= AGENT_MAX_DEST_CONSTRAINTS) {
|
||||
error_f("too many %s constraints", ext_name);
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
goto out;
|
||||
}
|
||||
*dcsp = xrecallocarray(*dcsp, *ndcsp, *ndcsp + 1,
|
||||
@@ -1234,6 +1236,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
|
||||
}
|
||||
if (*certs != NULL) {
|
||||
error_f("%s already set", ext_name);
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
goto out;
|
||||
}
|
||||
if ((r = sshbuf_get_u8(m, &v)) != 0 ||
|
||||
@@ -1245,6 +1248,7 @@ parse_key_constraint_extension(struct sshbuf *m, char **sk_providerp,
|
||||
while (sshbuf_len(b) != 0) {
|
||||
if (*ncerts >= AGENT_MAX_EXT_CERTS) {
|
||||
error_f("too many %s constraints", ext_name);
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
goto out;
|
||||
}
|
||||
*certs = xrecallocarray(*certs, *ncerts, *ncerts + 1,
|
||||
@@ -1741,6 +1745,7 @@ process_ext_session_bind(SocketEntry *e)
|
||||
/* record new key/sid */
|
||||
if (e->nsession_ids >= AGENT_MAX_SESSION_IDS) {
|
||||
error_f("too many session IDs recorded");
|
||||
r = -1;
|
||||
goto out;
|
||||
}
|
||||
e->session_ids = xrecallocarray(e->session_ids, e->nsession_ids,
|
||||
|
||||
+1
-1
@@ -906,4 +906,4 @@ AUTHORS
|
||||
created OpenSSH. Markus Friedl contributed the support for SSH protocol
|
||||
versions 1.5 and 2.0.
|
||||
|
||||
OpenBSD 7.5 August 17, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 August 17, 2024 OpenBSD 7.6
|
||||
|
||||
+1
-1
@@ -120,4 +120,4 @@ AUTHORS
|
||||
Davison <[email protected]> added support for protocol version
|
||||
2.
|
||||
|
||||
OpenBSD 7.5 June 17, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 June 17, 2024 OpenBSD 7.6
|
||||
|
||||
+1
-1
@@ -47,4 +47,4 @@ HISTORY
|
||||
AUTHORS
|
||||
Markus Friedl <[email protected]>
|
||||
|
||||
OpenBSD 7.5 June 17, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 June 17, 2024 OpenBSD 7.6
|
||||
|
||||
+1
-1
@@ -32,4 +32,4 @@ HISTORY
|
||||
AUTHORS
|
||||
Markus Friedl <[email protected]>
|
||||
|
||||
OpenBSD 7.5 April 29, 2022 OpenBSD 7.5
|
||||
OpenBSD 7.6 April 29, 2022 OpenBSD 7.6
|
||||
|
||||
+3
-1
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: ssh-sk-client.c,v 1.12 2022/01/14 03:34:00 djm Exp $ */
|
||||
/* $OpenBSD: ssh-sk-client.c,v 1.13 2025/02/18 08:02:48 djm Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2019 Google LLC
|
||||
*
|
||||
@@ -439,6 +439,7 @@ sshsk_load_resident(const char *provider_path, const char *device,
|
||||
}
|
||||
if ((srk = calloc(1, sizeof(*srk))) == NULL) {
|
||||
error_f("calloc failed");
|
||||
r = SSH_ERR_ALLOC_FAIL;
|
||||
goto out;
|
||||
}
|
||||
srk->key = key;
|
||||
@@ -450,6 +451,7 @@ sshsk_load_resident(const char *provider_path, const char *device,
|
||||
if ((tmp = recallocarray(srks, nsrks, nsrks + 1,
|
||||
sizeof(*srks))) == NULL) {
|
||||
error_f("recallocarray keys failed");
|
||||
r = SSH_ERR_ALLOC_FAIL;
|
||||
goto out;
|
||||
}
|
||||
debug_f("srks[%zu]: %s %s uidlen %zu", nsrks,
|
||||
|
||||
+1
-1
@@ -31,4 +31,4 @@ HISTORY
|
||||
AUTHORS
|
||||
Damien Miller <[email protected]>
|
||||
|
||||
OpenBSD 7.5 April 29, 2022 OpenBSD 7.5
|
||||
OpenBSD 7.6 April 29, 2022 OpenBSD 7.6
|
||||
|
||||
@@ -1017,4 +1017,4 @@ AUTHORS
|
||||
created OpenSSH. Markus Friedl contributed the support for SSH protocol
|
||||
versions 1.5 and 2.0.
|
||||
|
||||
OpenBSD 7.5 July 18, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 July 18, 2024 OpenBSD 7.6
|
||||
|
||||
+1
-1
@@ -1430,4 +1430,4 @@ AUTHORS
|
||||
created OpenSSH. Markus Friedl contributed the support for SSH protocol
|
||||
versions 1.5 and 2.0.
|
||||
|
||||
OpenBSD 7.5 September 9, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 September 9, 2024 OpenBSD 7.6
|
||||
|
||||
+4
-1
@@ -99,7 +99,7 @@ verify_host_key_callback(struct sshkey *hostkey, struct ssh *ssh)
|
||||
options.required_rsa_size)) != 0)
|
||||
fatal_r(r, "Bad server host key");
|
||||
if (verify_host_key(xxx_host, xxx_hostaddr, hostkey,
|
||||
xxx_conn_info) == -1)
|
||||
xxx_conn_info) != 0)
|
||||
fatal("Host key verification failed.");
|
||||
return 0;
|
||||
}
|
||||
@@ -699,6 +699,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
|
||||
|
||||
if ((pktype = sshkey_type_from_name(pkalg)) == KEY_UNSPEC) {
|
||||
debug_f("server sent unknown pkalg %s", pkalg);
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
goto done;
|
||||
}
|
||||
if ((r = sshkey_from_blob(pkblob, blen, &key)) != 0) {
|
||||
@@ -709,6 +710,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
|
||||
error("input_userauth_pk_ok: type mismatch "
|
||||
"for decoded key (received %d, expected %d)",
|
||||
key->type, pktype);
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -728,6 +730,7 @@ input_userauth_pk_ok(int type, u_int32_t seq, struct ssh *ssh)
|
||||
SSH_FP_DEFAULT);
|
||||
error_f("server replied with unknown key: %s %s",
|
||||
sshkey_type(key), fp == NULL ? "<ERROR>" : fp);
|
||||
r = SSH_ERR_INVALID_FORMAT;
|
||||
goto done;
|
||||
}
|
||||
ident = format_identity(id);
|
||||
|
||||
@@ -684,4 +684,4 @@ AUTHORS
|
||||
versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
|
||||
for privilege separation.
|
||||
|
||||
OpenBSD 7.5 September 15, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 September 15, 2024 OpenBSD 7.6
|
||||
|
||||
+1
-1
@@ -1408,4 +1408,4 @@ AUTHORS
|
||||
versions 1.5 and 2.0. Niels Provos and Markus Friedl contributed support
|
||||
for privilege separation.
|
||||
|
||||
OpenBSD 7.5 September 15, 2024 OpenBSD 7.5
|
||||
OpenBSD 7.6 September 15, 2024 OpenBSD 7.6
|
||||
|
||||
@@ -2708,14 +2708,6 @@ sshkey_ec_validate_public(const EC_GROUP *group, const EC_POINT *public)
|
||||
* EC_POINT_oct2point then the caller will need to explicitly check.
|
||||
*/
|
||||
|
||||
/*
|
||||
* We shouldn't ever hit this case because bignum_get_ecpoint()
|
||||
* refuses to load GF2m points.
|
||||
*/
|
||||
if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) !=
|
||||
NID_X9_62_prime_field)
|
||||
goto out;
|
||||
|
||||
/* Q != infinity */
|
||||
if (EC_POINT_is_at_infinity(group, public))
|
||||
goto out;
|
||||
@@ -2815,11 +2807,6 @@ sshkey_dump_ec_point(const EC_GROUP *group, const EC_POINT *point)
|
||||
fprintf(stderr, "%s: BN_new failed\n", __func__);
|
||||
goto out;
|
||||
}
|
||||
if (EC_METHOD_get_field_type(EC_GROUP_method_of(group)) !=
|
||||
NID_X9_62_prime_field) {
|
||||
fprintf(stderr, "%s: group is not a prime field\n", __func__);
|
||||
goto out;
|
||||
}
|
||||
if (EC_POINT_get_affine_coordinates_GFp(group, point,
|
||||
x, y, NULL) != 1) {
|
||||
fprintf(stderr, "%s: EC_POINT_get_affine_coordinates_GFp\n",
|
||||
|
||||
@@ -874,6 +874,7 @@ cert_filter_principals(const char *path, u_long linenum,
|
||||
}
|
||||
if ((principals = sshbuf_dup_string(nprincipals)) == NULL) {
|
||||
error_f("buffer error");
|
||||
r = SSH_ERR_ALLOC_FAIL;
|
||||
goto out;
|
||||
}
|
||||
/* success */
|
||||
|
||||
Reference in New Issue
Block a user