mirror of
https://github.com/clearml/dropbear
synced 2025-05-09 14:21:22 +00:00
merge of 'b1dd3b94e60a07a176dba2b035ac79968595990a'
and 'bcb33fce2fad01a7626598209d43af3571bd86f0' --HG-- extra : convert_revision : 691c56da3db2685f58ea53540a73c1b79e7df9cd
This commit is contained in:
commit
fd304d763a
@ -60,8 +60,8 @@ void cli_pubkeyfail() {
|
|||||||
|
|
||||||
void recv_msg_userauth_pk_ok() {
|
void recv_msg_userauth_pk_ok() {
|
||||||
|
|
||||||
struct SignKeyList *keyitem;
|
struct SignKeyList *keyitem = NULL;
|
||||||
buffer* keybuf;
|
buffer* keybuf = NULL;
|
||||||
char* algotype = NULL;
|
char* algotype = NULL;
|
||||||
unsigned int algolen;
|
unsigned int algolen;
|
||||||
int keytype;
|
int keytype;
|
||||||
@ -122,6 +122,8 @@ void recv_msg_userauth_pk_ok() {
|
|||||||
} else {
|
} else {
|
||||||
TRACE(("That was whacky. We got told that a key was valid, but it didn't match our list. Sounds like dodgy code on Dropbear's part"))
|
TRACE(("That was whacky. We got told that a key was valid, but it didn't match our list. Sounds like dodgy code on Dropbear's part"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf_free(keybuf);
|
||||||
|
|
||||||
TRACE(("leave recv_msg_userauth_pk_ok"))
|
TRACE(("leave recv_msg_userauth_pk_ok"))
|
||||||
}
|
}
|
||||||
|
@ -373,8 +373,7 @@ static void addforward(char* origstr, struct TCPFwdList** fwdlist) {
|
|||||||
TRACE(("connectaddr == NULL"))
|
TRACE(("connectaddr == NULL"))
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
*connectaddr = '\0';
|
||||||
connectaddr[0] = '\0';
|
|
||||||
connectaddr++;
|
connectaddr++;
|
||||||
|
|
||||||
connectport = strchr(connectaddr, ':');
|
connectport = strchr(connectaddr, ':');
|
||||||
@ -382,8 +381,7 @@ static void addforward(char* origstr, struct TCPFwdList** fwdlist) {
|
|||||||
TRACE(("connectport == NULL"))
|
TRACE(("connectport == NULL"))
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
*connectport = '\0';
|
||||||
connectport[0] = '\0';
|
|
||||||
connectport++;
|
connectport++;
|
||||||
|
|
||||||
newfwd = (struct TCPFwdList*)m_malloc(sizeof(struct TCPFwdList));
|
newfwd = (struct TCPFwdList*)m_malloc(sizeof(struct TCPFwdList));
|
||||||
@ -417,6 +415,8 @@ static void addforward(char* origstr, struct TCPFwdList** fwdlist) {
|
|||||||
newfwd->next = *fwdlist;
|
newfwd->next = *fwdlist;
|
||||||
*fwdlist = newfwd;
|
*fwdlist = newfwd;
|
||||||
|
|
||||||
|
m_free(str);
|
||||||
|
|
||||||
TRACE(("leave addforward: done"))
|
TRACE(("leave addforward: done"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
|
|
||||||
/* Mappings for ciphers, parameters are
|
/* Mappings for ciphers, parameters are
|
||||||
{&cipher_desc, keysize, blocksize} */
|
{&cipher_desc, keysize, blocksize} */
|
||||||
|
/* NOTE: if keysize > 2*SHA1_HASH_SIZE, code such as hashkeys()
|
||||||
|
needs revisiting */
|
||||||
|
|
||||||
#ifdef DROPBEAR_AES256_CBC
|
#ifdef DROPBEAR_AES256_CBC
|
||||||
static const struct dropbear_cipher dropbear_aes256 =
|
static const struct dropbear_cipher dropbear_aes256 =
|
||||||
|
@ -217,12 +217,10 @@ static void kexinitialise() {
|
|||||||
* already initialised hash_state hs, which should already have processed
|
* already initialised hash_state hs, which should already have processed
|
||||||
* the dh_K and hash, since these are common. X is the letter 'A', 'B' etc.
|
* the dh_K and hash, since these are common. X is the letter 'A', 'B' etc.
|
||||||
* out must have at least min(SHA1_HASH_SIZE, outlen) bytes allocated.
|
* out must have at least min(SHA1_HASH_SIZE, outlen) bytes allocated.
|
||||||
* The output will only be expanded once, since that is all that is required
|
* The output will only be expanded once, as we are assured that
|
||||||
* (for 3DES and SHA, with 24 and 20 bytes respectively).
|
* outlen <= 2*SHA1_HASH_SIZE for all known hashes.
|
||||||
*
|
*
|
||||||
* See Section 5.2 of the IETF secsh Transport Draft for details */
|
* See Section 7.2 of rfc4253 (ssh transport) for details */
|
||||||
|
|
||||||
/* Duplicated verbatim from kex.c --mihnea */
|
|
||||||
static void hashkeys(unsigned char *out, int outlen,
|
static void hashkeys(unsigned char *out, int outlen,
|
||||||
const hash_state * hs, const unsigned char X) {
|
const hash_state * hs, const unsigned char X) {
|
||||||
|
|
||||||
|
4
dbutil.c
4
dbutil.c
@ -286,9 +286,9 @@ int dropbear_listen(const char* address, const char* port,
|
|||||||
len = 20 + strlen(strerror(err));
|
len = 20 + strlen(strerror(err));
|
||||||
*errstring = (char*)m_malloc(len);
|
*errstring = (char*)m_malloc(len);
|
||||||
snprintf(*errstring, len, "Error listening: %s", strerror(err));
|
snprintf(*errstring, len, "Error listening: %s", strerror(err));
|
||||||
TRACE(("leave dropbear_listen: failure, %s", strerror(err)))
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
TRACE(("leave dropbear_listen: failure, %s", strerror(err)))
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE(("leave dropbear_listen: success, %d socks bound", nsock))
|
TRACE(("leave dropbear_listen: success, %d socks bound", nsock))
|
||||||
|
3
random.c
3
random.c
@ -234,8 +234,7 @@ void gen_random_mpint(mp_int *max, mp_int *rand) {
|
|||||||
|
|
||||||
/* keep regenerating until we get one satisfying
|
/* keep regenerating until we get one satisfying
|
||||||
* 0 < rand < max */
|
* 0 < rand < max */
|
||||||
} while ( ( (max != NULL) && (mp_cmp(rand, max) != MP_LT) )
|
} while (mp_cmp(rand, max) != MP_LT);
|
||||||
|| (mp_cmp_d(rand, 0) != MP_GT) );
|
|
||||||
m_burn(randbuf, len);
|
m_burn(randbuf, len);
|
||||||
m_free(randbuf);
|
m_free(randbuf);
|
||||||
}
|
}
|
||||||
|
@ -181,10 +181,15 @@ void svr_dropbear_log(int priority, const char* format, va_list param) {
|
|||||||
|
|
||||||
if (!svr_opts.usingsyslog || havetrace)
|
if (!svr_opts.usingsyslog || havetrace)
|
||||||
{
|
{
|
||||||
|
struct tm * local_tm = NULL;
|
||||||
timesec = time(NULL);
|
timesec = time(NULL);
|
||||||
if (strftime(datestr, sizeof(datestr), "%b %d %H:%M:%S",
|
local_tm = localtime(×ec);
|
||||||
localtime(×ec)) == 0) {
|
if (local_tm == NULL
|
||||||
datestr[0] = '?'; datestr[1] = '\0';
|
|| strftime(datestr, sizeof(datestr), "%b %d %H:%M:%S",
|
||||||
|
localtime(×ec)) == 0)
|
||||||
|
{
|
||||||
|
// upon failure, just print the epoch-seconds time.
|
||||||
|
snprintf(datestr, sizeof(datestr), "%d", timesec);
|
||||||
}
|
}
|
||||||
fprintf(stderr, "[%d] %s %s\n", getpid(), datestr, printbuf);
|
fprintf(stderr, "[%d] %s %s\n", getpid(), datestr, printbuf);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user