[openssh-commits] [openssh] branch master updated: upstream: simplify algorithm list functions using xextendf(); ok
git+noreply at mindrot.org
git+noreply at mindrot.org
Tue Sep 2 21:09:18 AEST 2025
This is an automated email from the git hooks/post-receive script.
djm pushed a commit to branch master
in repository openssh.
The following commit(s) were added to refs/heads/master by this push:
new cc4eb3d69 upstream: simplify algorithm list functions using xextendf(); ok
cc4eb3d69 is described below
commit cc4eb3d6943cb57e08ab3abbcf92644deb429e46
Author: djm at openbsd.org <djm at openbsd.org>
AuthorDate: Tue Sep 2 11:08:34 2025 +0000
upstream: simplify algorithm list functions using xextendf(); ok
dtucker@
OpenBSD-Commit-ID: ffc5f8d0c25b95705a8a66c8b634f98d23bd92dc
---
cipher.c | 17 ++++-------------
kex-names.c | 21 ++++++---------------
mac.c | 21 ++++++---------------
sshkey.c | 18 +++++-------------
4 files changed, 21 insertions(+), 56 deletions(-)
diff --git a/cipher.c b/cipher.c
index 8a18da2df..5e096cebf 100644
--- a/cipher.c
+++ b/cipher.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cipher.c,v 1.124 2025/03/14 09:49:49 tb Exp $ */
+/* $OpenBSD: cipher.c,v 1.125 2025/09/02 11:08:34 djm Exp $ */
/*
* Author: Tatu Ylonen <ylo at cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo at cs.hut.fi>, Espoo, Finland
@@ -116,25 +116,16 @@ static const struct sshcipher ciphers[] = {
char *
cipher_alg_list(char sep, int auth_only)
{
- char *tmp, *ret = NULL;
- size_t nlen, rlen = 0;
+ char *ret = NULL;
const struct sshcipher *c;
+ char sep_str[2] = {sep, '\0'};
for (c = ciphers; c->name != NULL; c++) {
if ((c->flags & CFLAG_INTERNAL) != 0)
continue;
if (auth_only && c->auth_len == 0)
continue;
- if (ret != NULL)
- ret[rlen++] = sep;
- nlen = strlen(c->name);
- if ((tmp = realloc(ret, rlen + nlen + 2)) == NULL) {
- free(ret);
- return NULL;
- }
- ret = tmp;
- memcpy(ret + rlen, c->name, nlen + 1);
- rlen += nlen;
+ xextendf(&ret, sep_str, "%s", c->name);
}
return ret;
}
diff --git a/kex-names.c b/kex-names.c
index 96deb8817..a20ce602a 100644
--- a/kex-names.c
+++ b/kex-names.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: kex-names.c,v 1.5 2025/08/11 10:55:38 djm Exp $ */
+/* $OpenBSD: kex-names.c,v 1.6 2025/09/02 11:08:34 djm Exp $ */
/*
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
*
@@ -94,22 +94,13 @@ static const struct kexalg kexalgs[] = {
char *
kex_alg_list(char sep)
{
- char *ret = NULL, *tmp;
- size_t nlen, rlen = 0;
+ char *ret = NULL;
const struct kexalg *k;
+ char sep_str[2] = {sep, '\0'};
+
+ for (k = kexalgs; k->name != NULL; k++)
+ xextendf(&ret, sep_str, "%s", k->name);
- for (k = kexalgs; k->name != NULL; k++) {
- if (ret != NULL)
- ret[rlen++] = sep;
- nlen = strlen(k->name);
- if ((tmp = realloc(ret, rlen + nlen + 2)) == NULL) {
- free(ret);
- return NULL;
- }
- ret = tmp;
- memcpy(ret + rlen, k->name, nlen + 1);
- rlen += nlen;
- }
return ret;
}
diff --git a/mac.c b/mac.c
index f3dda6692..ee2c17d0e 100644
--- a/mac.c
+++ b/mac.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mac.c,v 1.35 2019/09/06 04:53:27 djm Exp $ */
+/* $OpenBSD: mac.c,v 1.36 2025/09/02 11:08:34 djm Exp $ */
/*
* Copyright (c) 2001 Markus Friedl. All rights reserved.
*
@@ -83,22 +83,13 @@ static const struct macalg macs[] = {
char *
mac_alg_list(char sep)
{
- char *ret = NULL, *tmp;
- size_t nlen, rlen = 0;
+ char *ret = NULL;
const struct macalg *m;
+ char sep_str[2] = {sep, '\0'};
+
+ for (m = macs; m->name != NULL; m++)
+ xextendf(&ret, sep_str, "%s", m->name);
- for (m = macs; m->name != NULL; m++) {
- if (ret != NULL)
- ret[rlen++] = sep;
- nlen = strlen(m->name);
- if ((tmp = realloc(ret, rlen + nlen + 2)) == NULL) {
- free(ret);
- return NULL;
- }
- ret = tmp;
- memcpy(ret + rlen, m->name, nlen + 1);
- rlen += nlen;
- }
return ret;
}
diff --git a/sshkey.c b/sshkey.c
index 6b3e24ec4..3633c878a 100644
--- a/sshkey.c
+++ b/sshkey.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.152 2025/08/29 03:50:38 djm Exp $ */
+/* $OpenBSD: sshkey.c,v 1.153 2025/09/02 11:08:34 djm Exp $ */
/*
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -308,9 +308,10 @@ sshkey_match_keyname_to_sigalgs(const char *keyname, const char *sigalgs)
char *
sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep)
{
- char *tmp, *ret = NULL;
- size_t i, nlen, rlen = 0;
+ char *ret = NULL;
+ size_t i;
const struct sshkey_impl *impl;
+ char sep_str[2] = {sep, '\0'};
for (i = 0; keyimpls[i] != NULL; i++) {
impl = keyimpls[i];
@@ -320,16 +321,7 @@ sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep)
continue;
if ((certs_only && !impl->cert) || (plain_only && impl->cert))
continue;
- if (ret != NULL)
- ret[rlen++] = sep;
- nlen = strlen(impl->name);
- if ((tmp = realloc(ret, rlen + nlen + 2)) == NULL) {
- free(ret);
- return NULL;
- }
- ret = tmp;
- memcpy(ret + rlen, impl->name, nlen + 1);
- rlen += nlen;
+ xextendf(&ret, sep_str, "%s", impl->name);
}
return ret;
}
--
To stop receiving notification emails like this one, please contact
djm at mindrot.org.
More information about the openssh-commits
mailing list