1
0
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:
Matt Johnston 2007-02-04 10:32:59 +00:00
commit fd304d763a
7 changed files with 24 additions and 18 deletions

View File

@ -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"))
} }

View File

@ -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;

View File

@ -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 =

View File

@ -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) {

View File

@ -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))

View File

@ -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);
} }

View File

@ -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(&timesec);
localtime(&timesec)) == 0) { if (local_tm == NULL
datestr[0] = '?'; datestr[1] = '\0'; || strftime(datestr, sizeof(datestr), "%b %d %H:%M:%S",
localtime(&timesec)) == 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);
} }