mirror of
https://github.com/libssh2/libssh2.git
synced 2026-10-24 03:48:58 +03:00
tidy-up: miscellaneous
- chacha: link to upstream source. - fix comment typos and minor source nits. Closes #2138
This commit is contained in:
@@ -71,8 +71,7 @@
|
||||
|
||||
This 6-digit (24 bits) hexadecimal number does not show pre-release number,
|
||||
and it is always a greater number in a more recent release. It makes
|
||||
comparisons with greater than and less than work.
|
||||
*/
|
||||
comparisons with greater than and less than work. */
|
||||
#define LIBSSH2_VERSION_NUM 0x010b01
|
||||
|
||||
/*
|
||||
|
||||
@@ -45,8 +45,8 @@
|
||||
#undef AC_APPLE_UNIVERSAL_BUILD
|
||||
|
||||
/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for `alloca.c' support on those systems.
|
||||
*/
|
||||
systems. This function is required for `alloca.c' support on those
|
||||
systems. */
|
||||
#undef CRAY_STACKSEG_END
|
||||
|
||||
/* Define to 1 if using `alloca.c'. */
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
* Public domain.
|
||||
* Copyright not intended 2024.
|
||||
*
|
||||
* Source: https://github.com/openssh/openssh-portable/blob/master/chacha.c
|
||||
*
|
||||
* SPDX-License-Identifier: SAX-PD-2.0
|
||||
*/
|
||||
|
||||
|
||||
@@ -256,7 +256,7 @@ static int process_host_key(LIBSSH2_SESSION *session,
|
||||
fingerprint));
|
||||
}
|
||||
#endif /* LIBSSH2DEBUG */
|
||||
#endif /* ! LIBSSH2_MD5 */
|
||||
#endif /* !LIBSSH2_MD5 */
|
||||
|
||||
{
|
||||
ssh2_sha1_ctx fingerprint_ctx;
|
||||
|
||||
@@ -65,8 +65,7 @@
|
||||
those names in libssh2.h, so we need to include the AIX headers first, to
|
||||
make sure all code is compiled with consistent names of these fields.
|
||||
While arguable the best would to change libssh2.h to use other names, that
|
||||
would break backwards compatibility.
|
||||
*/
|
||||
would break backwards compatibility. */
|
||||
#ifdef HAVE_POLL
|
||||
#include <poll.h>
|
||||
#elif defined(HAVE_SELECT) && defined(HAVE_SYS_SELECT_H)
|
||||
@@ -763,10 +762,10 @@ struct _LIBSSH2_SESSION {
|
||||
/* Whether to use the OpenSSH Strict KEX extension */
|
||||
int kex_strict;
|
||||
|
||||
/* (remote as source of data -- packet_read ) */
|
||||
/* (remote as source of data -- packet_read) */
|
||||
struct endpoint_data remote;
|
||||
|
||||
/* (local as source of data -- packet_write ) */
|
||||
/* (local as source of data -- packet_write) */
|
||||
struct endpoint_data local;
|
||||
|
||||
/* Inbound Data linked list -- Sometimes the packet that comes in is not
|
||||
|
||||
@@ -328,7 +328,7 @@ static int mbed_bn_random(ssh2_bn *bn, int bits, int top, int bottom)
|
||||
return -1;
|
||||
|
||||
/* Zero unused bits above the most significant bit */
|
||||
for(i = len * 8 - 1; (size_t)bits <= i; --i) {
|
||||
for(i = (len * 8) - 1; (size_t)bits <= i; --i) {
|
||||
err = mbedtls_mpi_set_bit(bn, i, 0);
|
||||
if(err)
|
||||
return -1;
|
||||
@@ -835,7 +835,7 @@ int ssh2_mbed_dh_key_pair(ssh2_dh_ctx *dhctx, ssh2_bn *pub, ssh2_bn *g,
|
||||
ssh2_bn *p, int group_order)
|
||||
{
|
||||
/* Generate x and e */
|
||||
mbed_bn_random(*dhctx, group_order * 8 - 1, 0, -1);
|
||||
mbed_bn_random(*dhctx, (group_order * 8) - 1, 0, -1);
|
||||
mbedtls_mpi_exp_mod(pub, g, *dhctx, p, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -435,7 +435,7 @@ int ssh2_rsa_sha1_verify(ssh2_rsa_ctx *rsactx,
|
||||
m_len);
|
||||
}
|
||||
#endif
|
||||
#endif /* LIBSSH_RSA */
|
||||
#endif /* LIBSSH2_RSA */
|
||||
|
||||
#if LIBSSH2_DSA
|
||||
int ssh2_dsa_new(ssh2_dsa_ctx **dsactx,
|
||||
@@ -616,7 +616,7 @@ int ssh2_dsa_sha1_verify(ssh2_dsa_ctx *dsactx,
|
||||
|
||||
return (ret == 1) ? 0 : -1;
|
||||
}
|
||||
#endif /* LIBSSH_DSA */
|
||||
#endif /* LIBSSH2_DSA */
|
||||
|
||||
#if LIBSSH2_ECDSA
|
||||
|
||||
@@ -1698,7 +1698,7 @@ int ssh2_dsa_new_private(ssh2_dsa_ctx **dsa,
|
||||
|
||||
return rc;
|
||||
}
|
||||
#endif /* LIBSSH_DSA */
|
||||
#endif /* LIBSSH2_DSA */
|
||||
|
||||
#if LIBSSH2_ECDSA
|
||||
int ssh2_ecdsa_new_private_frommemory(ssh2_ecdsa_ctx **ec_ctx,
|
||||
@@ -2674,7 +2674,7 @@ int ssh2_dsa_sha1_sign(ssh2_dsa_ctx *dsactx,
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif /* LIBSSH_DSA */
|
||||
#endif /* LIBSSH2_DSA */
|
||||
|
||||
#if LIBSSH2_ECDSA
|
||||
|
||||
|
||||
@@ -1006,7 +1006,6 @@ int ssh2_hmac_ctx_init(ssh2_hmac_ctx *ctx)
|
||||
|
||||
#if LIBSSH2_MD5
|
||||
int ssh2_hmac_md5_init(ssh2_hmac_ctx *ctx, void *key, size_t keylen)
|
||||
void *key, size_t keylen)
|
||||
{
|
||||
return os400qc3_hmac_init(ctx, Qc3_MD5, SSH2_MD5_DIG_LEN,
|
||||
key, keylen);
|
||||
|
||||
@@ -755,7 +755,7 @@ int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey,
|
||||
}
|
||||
|
||||
/*
|
||||
* Fetch a list of supported public key from a server
|
||||
* Fetch a list of supported public keys from a server
|
||||
*/
|
||||
int libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey,
|
||||
unsigned long *num_keys,
|
||||
|
||||
115
src/scp.c
115
src/scp.c
@@ -56,80 +56,79 @@
|
||||
/* Max. length of a quoted string after shell_quotearg() processing */
|
||||
#define shell_quotedsize(s) (3 * strlen(s) + 2)
|
||||
|
||||
/*
|
||||
This function quotes a string in a way suitable to be used with a
|
||||
shell, e.g. the filename
|
||||
one two
|
||||
becomes
|
||||
'one two'
|
||||
/* This function quotes a string in a way suitable to be used with a
|
||||
shell, e.g. the filename
|
||||
one two
|
||||
becomes
|
||||
'one two'
|
||||
|
||||
The resulting output string is crafted in a way that makes it usable
|
||||
with the two most common shell types: Bourne Shell derived shells
|
||||
(sh, ksh, ksh93, bash, zsh) and C-Shell derivates (csh, tcsh).
|
||||
The resulting output string is crafted in a way that makes it usable
|
||||
with the two most common shell types: Bourne Shell derived shells
|
||||
(sh, ksh, ksh93, bash, zsh) and C-Shell derivates (csh, tcsh).
|
||||
|
||||
The following special cases are handled:
|
||||
o If the string contains an apostrophy itself, the apostrophy
|
||||
character is written in quotation marks, e.g. "'".
|
||||
The shell cannot handle the syntax 'doesn\'t', so we close the
|
||||
current argument word, add the apostrophe in quotation marks "",
|
||||
and open a new argument word instead (_ indicate the input
|
||||
string characters):
|
||||
_____ _ _
|
||||
'doesn' "'" 't'
|
||||
The following special cases are handled:
|
||||
o If the string contains an apostrophy itself, the apostrophy
|
||||
character is written in quotation marks, e.g. "'".
|
||||
The shell cannot handle the syntax 'doesn\'t', so we close the
|
||||
current argument word, add the apostrophe in quotation marks "",
|
||||
and open a new argument word instead (_ indicate the input
|
||||
string characters):
|
||||
_____ _ _
|
||||
'doesn' "'" 't'
|
||||
|
||||
Sequences of apostrophes are combined in one pair of quotation marks:
|
||||
a'''b
|
||||
becomes
|
||||
_ ___ _
|
||||
'a'"'''"'b'
|
||||
Sequences of apostrophes are combined in one pair of quotation marks:
|
||||
a'''b
|
||||
becomes
|
||||
_ ___ _
|
||||
'a'"'''"'b'
|
||||
|
||||
o If the string contains an exclamation mark (!), the C-Shell
|
||||
interprets it as an event number. Using \! (not within quotation
|
||||
marks or single quotation marks) is a mechanism understood by
|
||||
both Bourne Shell and C-Shell.
|
||||
o If the string contains an exclamation mark (!), the C-Shell
|
||||
interprets it as an event number. Using \! (not within quotation
|
||||
marks or single quotation marks) is a mechanism understood by
|
||||
both Bourne Shell and C-Shell.
|
||||
|
||||
If a quotation was already started, the argument word is closed
|
||||
first:
|
||||
a!b
|
||||
If a quotation was already started, the argument word is closed
|
||||
first:
|
||||
a!b
|
||||
|
||||
become
|
||||
_ _ _
|
||||
'a'\!'b'
|
||||
become
|
||||
_ _ _
|
||||
'a'\!'b'
|
||||
|
||||
The result buffer must be large enough for the expanded result. A
|
||||
bad case regarding expansion is alternating characters and
|
||||
apostrophes:
|
||||
The result buffer must be large enough for the expanded result. A
|
||||
bad case regarding expansion is alternating characters and
|
||||
apostrophes:
|
||||
|
||||
a'b'c'd' (length 8) gets converted to
|
||||
'a'"'"'b'"'"'c'"'"'d'"'" (length 24)
|
||||
a'b'c'd' (length 8) gets converted to
|
||||
'a'"'"'b'"'"'c'"'"'d'"'" (length 24)
|
||||
|
||||
This is the worst case.
|
||||
This is the worst case.
|
||||
|
||||
Maximum length of the result:
|
||||
1 + 6 * (length(input) + 1) / 2) + 1
|
||||
Maximum length of the result:
|
||||
1 + 6 * (length(input) + 1) / 2) + 1
|
||||
|
||||
=> 3 * length(input) + 2
|
||||
=> 3 * length(input) + 2
|
||||
|
||||
Explanation:
|
||||
o leading apostrophe
|
||||
o one character / apostrophe pair (two characters) can get
|
||||
represented as 6 characters: a' -> a'"'"'
|
||||
o String terminator (+1)
|
||||
Explanation:
|
||||
o leading apostrophe
|
||||
o one character / apostrophe pair (two characters) can get
|
||||
represented as 6 characters: a' -> a'"'"'
|
||||
o String terminator (+1)
|
||||
|
||||
A result buffer three times the size of the input buffer + 2
|
||||
characters should be safe.
|
||||
A result buffer three times the size of the input buffer + 2
|
||||
characters should be safe.
|
||||
|
||||
References:
|
||||
o csh-compatible quotation (special handling for '!' etc.), see
|
||||
https://www.grymoire.com/Unix/Csh.html#toc-uh-10
|
||||
References:
|
||||
o csh-compatible quotation (special handling for '!' etc.), see
|
||||
https://www.grymoire.com/Unix/Csh.html#toc-uh-10
|
||||
|
||||
Return value:
|
||||
Length of the resulting string (not counting the null-terminator),
|
||||
or 0 in case of errors, e.g. result buffer too small
|
||||
Return value:
|
||||
Length of the resulting string (not counting the null-terminator),
|
||||
or 0 in case of errors, e.g. result buffer too small
|
||||
|
||||
Note: this function could possible be used elsewhere within libssh2, but
|
||||
until then it is kept static and in this source file.
|
||||
*/
|
||||
Note: this function could possible be used elsewhere within libssh2, but
|
||||
until then it is kept static and in this source file.
|
||||
*/
|
||||
static size_t shell_quotearg(const char *path,
|
||||
unsigned char *buf, size_t bufsize)
|
||||
{
|
||||
|
||||
@@ -49,9 +49,7 @@
|
||||
|
||||
The point being to make sure that while in non-blocking mode these always
|
||||
return no matter what the return code is, but in blocking mode it blocks
|
||||
if EAGAIN is the reason for the return from the underlying function.
|
||||
|
||||
*/
|
||||
if EAGAIN is the reason for the return from the underlying function. */
|
||||
#define BLOCK_ADJUST(rc, sess, x) \
|
||||
do { \
|
||||
time_t entry_time = time(NULL); \
|
||||
|
||||
@@ -980,7 +980,7 @@ static int wcng_load_private(LIBSSH2_SESSION *session,
|
||||
PEM_RSA_HEADER, PEM_RSA_FOOTER,
|
||||
&data, &datalen);
|
||||
#else
|
||||
(void)tryLoadRSA;
|
||||
(void)tryLoadRSA;
|
||||
#endif
|
||||
|
||||
#if LIBSSH2_DSA
|
||||
@@ -989,7 +989,7 @@ static int wcng_load_private(LIBSSH2_SESSION *session,
|
||||
PEM_DSA_HEADER, PEM_DSA_FOOTER,
|
||||
&data, &datalen);
|
||||
#else
|
||||
(void)tryLoadDSA;
|
||||
(void)tryLoadDSA;
|
||||
#endif
|
||||
|
||||
if(!ret) {
|
||||
@@ -1019,7 +1019,7 @@ static int wcng_load_private_memory(LIBSSH2_SESSION *session,
|
||||
privatekeydata, privatekeydata_len,
|
||||
&data, &datalen);
|
||||
#else
|
||||
(void)tryLoadRSA;
|
||||
(void)tryLoadRSA;
|
||||
#endif
|
||||
|
||||
#if LIBSSH2_DSA
|
||||
|
||||
@@ -111,7 +111,7 @@ static int run_command_varg(char **output, const char *command, va_list args)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Rewrite the command to redirect stderr to stdout to we can output it */
|
||||
/* Rewrite the command to redirect stderr to stdout so we can output it */
|
||||
if(strlen(command_buf) + strlen(redirect_stderr) >= sizeof(buf)) {
|
||||
fprintf(stderr, "Unable to rewrite command (%s)\n", command);
|
||||
return -1;
|
||||
|
||||
@@ -38,10 +38,9 @@ static void fpcopy(char *output, char *input, int size)
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------*/
|
||||
/* give part of filename in partname. See code for proper
|
||||
value of i ( 0 = node, 1 = dev, 2 = dir, 3 = name etc.
|
||||
*/
|
||||
|
||||
/* give part of filename in partname. See code for proper
|
||||
value of i ( 0 = node, 1 = dev, 2 = dir, 3 = name etc. */
|
||||
static int fnamepart(char *inputfile, char *part, int whatpart)
|
||||
{
|
||||
struct pf_fabnam *pf;
|
||||
|
||||
Reference in New Issue
Block a user