Compare commits

...
16 Commits
Author SHA1 Message Date
Damien Miller d76b267511 autogenerated files for release 2025-02-18 19:15:08 +11:00
Damien Miller 6ebc4dd77a openssh-9.9p2 2025-02-18 19:12:51 +11:00
[email protected] 38df39ecf2 upstream: Fix cases where error codes were not correctly set
Reported by the Qualys Security Advisory team. ok markus@

OpenBSD-Commit-ID: 7bcd4ffe0fa1e27ff98d451fb9c22f5fae6e610d
2025-02-18 19:04:58 +11:00
[email protected] 5e07dee272 upstream: Don't reply to PING in preauth phase or during KEX
Reported by the Qualys Security Advisory team. ok markus@

OpenBSD-Commit-ID: c656ac4abd1504389d1733d85152044b15830217
2025-02-18 19:03:59 +11:00
[email protected] fb071011fb upstream: fix "Match invalid-user" from incorrectly being activated
in initial configuration pass when no other predicates were present on the
match line

OpenBSD-Commit-ID: 02703b4bd207fafd03788bc4e7774bf80be6c9a8
2025-02-11 10:37:17 +11:00
Damien Miller 729a26a978 fix uint64_t types; reported by Tom G. Christensen 2024-11-02 09:16:44 +11:00
Damien Miller 33c5f384ae htole64() etc for systems without endian.h 2024-10-27 15:36:30 +11:00
[email protected] fe8d28a7eb upstream: explicitly include endian.h
OpenBSD-Commit-ID: 13511fdef7535bdbc35b644c90090013da43a318
2024-10-27 15:36:24 +11:00
[email protected] 11f348196b upstream: fix ML-KEM768x25519 KEX on big-endian systems; spotted by
jsg@ feedback/ok deraadt@

OpenBSD-Commit-ID: 26d81a430811672bc762687166986cad40d28cc0
2024-10-27 15:36:19 +11:00
[email protected] 19bcb2d90c upstream: fix previous change to ssh_config Match, which broken on
negated Matches; spotted by phessler@ ok deraadt@

OpenBSD-Commit-ID: b1c6acec66cd5bd1252feff1d02ad7129ced37c7
2024-09-27 10:01:34 +10:00
[email protected] 66878e12a2 upstream: fix regression introduced when I switched the "Match"
criteria tokeniser to a more shell-like one. Apparently the old tokeniser
(accidentally?) allowed "Match criteria=argument" as well as the "Match
criteria argument" syntax that we tested for.

People were using this syntax so this adds back support for
"Match criteria=argument"

bz3739 ok dtucker

OpenBSD-Commit-ID: d1eebedb8c902002b75b75debfe1eeea1801f58a
2024-09-25 11:33:51 +10:00
Damien Miller ff2cd1dd57 gss-serv.c needs sys/param.h
From Void Linux
2024-09-25 11:33:47 +10:00
Damien Miller 2c12ae8cf9 build construct_utmp() when USE_BTMP is set
Fixes compile error on Void Linux/Musl
2024-09-25 11:33:43 +10:00
Christoph Ostarek c7fda60118 fix utmpx ifdef
02e16ad95f did a copy-paste for
utmpx, but forgot to change the ifdef appropriately
2024-09-25 11:33:39 +10:00
Darren Tucker 7cf4dc414d Remove non-9.9 branch statuses. 2024-09-23 20:54:26 +10:00
Darren Tucker 8513f4d30a Add 9.9 branch to CI status console. 2024-09-23 20:54:03 +10:00
40 changed files with 328 additions and 2125 deletions
+3 -7
View File
@@ -6,10 +6,6 @@ master :
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/openssh.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:openssh)
[![Coverity Status](https://scan.coverity.com/projects/21341/badge.svg)](https://scan.coverity.com/projects/openssh-portable)
9.8 :
[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg?branch=V_9_8)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_8)
[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_8)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_8)
9.7 :
[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg?branch=V_9_7)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_7)
[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_7)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_7)
9.9 :
[![C/C++ CI](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml/badge.svg?branch=V_9_9)](https://github.com/openssh/openssh-portable/actions/workflows/c-cpp.yml?query=branch:V_9_9)
[![C/C++ CI self-hosted](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml/badge.svg?branch=V_9_9)](https://github.com/openssh/openssh-portable-selfhosted/actions/workflows/selfhosted.yml?query=branch:V_9_9)
+137 -2049
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -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
-3
View File
@@ -1405,9 +1405,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
Vendored
-6
View File
@@ -16639,12 +16639,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
-1
View File
@@ -2013,7 +2013,6 @@ AC_CHECK_FUNCS([ \
strtoll \
strtoul \
strtoull \
swap32 \
sysconf \
tcgetpgrp \
timegm \
+1 -1
View File
@@ -1,4 +1,4 @@
%global ver 9.9p1
%global ver 9.9p2
%global rel 1%{?dist}
# OpenSSH privilege separation requires a user & group ID
+1 -1
View File
@@ -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
+26
View File
@@ -646,6 +646,32 @@ struct winsize {
# endif /* WORDS_BIGENDIAN */
#endif /* BYTE_ORDER */
#ifndef HAVE_ENDIAN_H
# 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
# define le32toh(v) (openssh_swap32(v))
# define le64toh(v) (openssh_swap64(v))
# define htole64(v) (openssh_swap64(v))
# else
# define le32toh(v) ((uint32_t)v)
# define le64toh(v) ((uint64_t)v)
# define htole64(v) ((uint64_t)v)
# endif
#endif
/* Function replacement / compatibility hacks */
#if !defined(HAVE_GETADDRINFO) && (defined(HAVE_OGETADDRINFO) || defined(HAVE_NGETADDRINFO))
+1
View File
@@ -29,6 +29,7 @@
#ifdef GSSAPI
#include <sys/types.h>
#include <sys/param.h>
#include <stdarg.h>
#include <string.h>
+4 -1
View File
@@ -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"
+3 -1
View File
@@ -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;
}
+5 -3
View File
@@ -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,18 +161,19 @@ 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) {
+4 -4
View File
@@ -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);
+22 -1
View File
@@ -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)
+2 -1
View File
@@ -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);
+12 -5
View File
@@ -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,7 @@ echo '#define KRML_NOINLINE __attribute__((noinline, unused))'
echo '#define KRML_HOST_EPRINTF(...)'
echo '#define KRML_HOST_EXIT(x) fatal_f("internal error")'
echo
for i in $FILES; do
echo "/* from $i */"
# Changes to all files:
@@ -56,11 +58,16 @@ 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'
;;
# Default: pass through.
*)
cat
;;
cat
;;
esac
echo
done
+1 -1
View File
@@ -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
+9 -1
View File
@@ -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
View File
@@ -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;
}
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
+5
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+1 -1
View File
@@ -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
View File
@@ -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
+1
View File
@@ -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 */
+1 -1
View File
@@ -2,5 +2,5 @@
#define SSH_VERSION "OpenSSH_9.9"
#define SSH_PORTABLE "p1"
#define SSH_PORTABLE "p2"
#define SSH_RELEASE SSH_VERSION SSH_PORTABLE