mirror of
https://github.com/openssh/openssh-portable.git
synced 2026-01-12 00:04:08 +08:00
upstream: simplify algorithm list functions using xextendf(); ok
dtucker@ OpenBSD-Commit-ID: ffc5f8d0c25b95705a8a66c8b634f98d23bd92dc
This commit is contained in:
committed by
Damien Miller
parent
8866d24cdd
commit
cc4eb3d694
17
cipher.c
17
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@cs.hut.fi>
|
||||
* Copyright (c) 1995 Tatu Ylonen <ylo@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;
|
||||
}
|
||||
|
||||
21
kex-names.c
21
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;
|
||||
}
|
||||
|
||||
|
||||
21
mac.c
21
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;
|
||||
}
|
||||
|
||||
|
||||
18
sshkey.c
18
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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user