Mercurial > dropbear
changeset 182:aeca43462eee
merge of 954df0829153a81396cf111410fae269457c3ad6
and d7e8c6af971415504a2b626bf6dc1a4d50cdc5d7
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Sun, 13 Mar 2005 16:23:19 +0000 |
parents | 743fce568f49 (current diff) 1916df7df911 (diff) |
children | 5162f4e4021c |
files | |
diffstat | 23 files changed, 59 insertions(+), 58 deletions(-) [+] |
line wrap: on
line diff
--- a/buffer.c Sun Mar 13 16:22:36 2005 +0000 +++ b/buffer.c Sun Mar 13 16:23:19 2005 +0000 @@ -160,6 +160,16 @@ return buf->data[buf->pos++]; } +/* Get a bool from the buffer and increment the pos */ +unsigned char buf_getbool(buffer* buf) { + + unsigned char b; + b = buf_getbyte(buf); + if (b != 0) + b = 1; + return b; +} + /* put a byte, incrementing the length if required */ void buf_putbyte(buffer* buf, unsigned char val) {
--- a/buffer.h Sun Mar 13 16:22:36 2005 +0000 +++ b/buffer.h Sun Mar 13 16:23:19 2005 +0000 @@ -50,6 +50,7 @@ void buf_incrpos(buffer* buf, int incr); /* -ve is ok, to go backwards */ void buf_incrwritepos(buffer* buf, unsigned int incr); unsigned char buf_getbyte(buffer* buf); +unsigned char buf_getbool(buffer* buf); void buf_putbyte(buffer* buf, unsigned char val); unsigned char* buf_getptr(buffer* buf, unsigned int len); unsigned char* buf_getwriteptr(buffer* buf, unsigned int len);
--- a/channel.h Sun Mar 13 16:22:36 2005 +0000 +++ b/channel.h Sun Mar 13 16:23:19 2005 +0000 @@ -100,7 +100,7 @@ void chancleanup(); void setchannelfds(fd_set *readfd, fd_set *writefd); void channelio(fd_set *readfd, fd_set *writefd); -struct Channel* getchannel(unsigned int chan); +struct Channel* getchannel(); struct Channel* newchannel(unsigned int remotechan, const struct ChanType *type, unsigned int transwindow, unsigned int transmaxpacket);
--- a/cli-auth.c Sun Mar 13 16:22:36 2005 +0000 +++ b/cli-auth.c Sun Mar 13 16:23:19 2005 +0000 @@ -127,7 +127,7 @@ methods = buf_getstring(ses.payload, &methlen); - partial = buf_getbyte(ses.payload); + partial = buf_getbool(ses.payload); if (partial) { dropbear_log(LOG_INFO, "Authentication partially succeeded, more attempts required");
--- a/cli-channel.c Sun Mar 13 16:22:36 2005 +0000 +++ b/cli-channel.c Sun Mar 13 16:23:19 2005 +0000 @@ -33,15 +33,12 @@ /* We receive channel data - only used by the client chansession code*/ void recv_msg_channel_extended_data() { - unsigned int chan; struct Channel *channel; unsigned int datatype; TRACE(("enter recv_msg_channel_extended_data")) - chan = buf_getint(ses.payload); - channel = getchannel(chan); - + channel = getchannel(); if (channel == NULL) { dropbear_exit("Unknown channel"); }
--- a/cli-chansession.c Sun Mar 13 16:22:36 2005 +0000 +++ b/cli-chansession.c Sun Mar 13 16:23:19 2005 +0000 @@ -62,7 +62,7 @@ TRACE(("enter cli_chansessreq")) type = buf_getstring(ses.payload, NULL); - wantreply = buf_getbyte(ses.payload); + wantreply = buf_getbool(ses.payload); if (strcmp(type, "exit-status") != 0) { TRACE(("unknown request '%s'", type))
--- a/cli-runopts.c Sun Mar 13 16:22:36 2005 +0000 +++ b/cli-runopts.c Sun Mar 13 16:23:19 2005 +0000 @@ -53,7 +53,7 @@ "-i <identityfile> (multiple allowed)\n" #endif #ifdef ENABLE_CLI_LOCALTCPFWD - "-L <listenport:remotehsot:reportport> Local port forwarding\n" + "-L <listenport:remotehost:remoteport> Local port forwarding\n" #endif #ifdef ENABLE_CLI_REMOTETCPFWD "-R <listenport:remotehost:remoteport> Remote port forwarding\n"
--- a/cli-session.c Sun Mar 13 16:22:36 2005 +0000 +++ b/cli-session.c Sun Mar 13 16:23:19 2005 +0000 @@ -113,10 +113,14 @@ cli_ses.tty_raw_mode = 0; cli_ses.winchange = 0; - /* We store stdin's flags, so we can set them back on exit (otherwise - * busybox's ash isn't happy */ + /* We store std{in,out,err}'s flags, so we can set them back on exit + * (otherwise busybox's ash isn't happy */ cli_ses.stdincopy = dup(STDIN_FILENO); cli_ses.stdinflags = fcntl(STDIN_FILENO, F_GETFL, 0); + cli_ses.stdoutcopy = dup(STDOUT_FILENO); + cli_ses.stdoutflags = fcntl(STDOUT_FILENO, F_GETFL, 0); + cli_ses.stderrcopy = dup(STDERR_FILENO); + cli_ses.stderrflags = fcntl(STDERR_FILENO, F_GETFL, 0); cli_ses.retval = EXIT_SUCCESS; /* Assume it's clean if we don't get a specific exit status */ @@ -250,9 +254,11 @@ return; } - /* Set stdin back to non-blocking - busybox ash dies nastily - * if we don't revert the flags */ + /* Set std{in,out,err} back to non-blocking - busybox ash dies nastily if + * we don't revert the flags */ fcntl(cli_ses.stdincopy, F_SETFL, cli_ses.stdinflags); + fcntl(cli_ses.stdoutcopy, F_SETFL, cli_ses.stdoutflags); + fcntl(cli_ses.stderrcopy, F_SETFL, cli_ses.stderrflags); cli_tty_cleanup();
--- a/common-channel.c Sun Mar 13 16:22:36 2005 +0000 +++ b/common-channel.c Sun Mar 13 16:23:19 2005 +0000 @@ -162,8 +162,13 @@ return newchan; } -/* Get the channel structure corresponding to a channel number */ -struct Channel* getchannel(unsigned int chan) { +/* Returns the channel structure corresponding to the channel in the current + * data packet (ses.payload must be positioned appropriately) */ +struct Channel* getchannel() { + + unsigned int chan; + + chan = buf_getint(ses.payload); if (chan >= ses.chansize || ses.channels[chan] == NULL) { return NULL; } @@ -474,14 +479,11 @@ * etc) FD is also EOF */ void recv_msg_channel_eof() { - unsigned int chan; struct Channel * channel; TRACE(("enter recv_msg_channel_eof")) - chan = buf_getint(ses.payload); - channel = getchannel(chan); - + channel = getchannel(); if (channel == NULL) { dropbear_exit("EOF for unknown channel"); } @@ -500,15 +502,11 @@ /* Handle channel closure(), respond in kind and close the channels */ void recv_msg_channel_close() { - unsigned int chan; struct Channel * channel; TRACE(("enter recv_msg_channel_close")) - chan = buf_getint(ses.payload); - TRACE(("close channel = %d", chan)) - channel = getchannel(chan); - + channel = getchannel(); if (channel == NULL) { /* disconnect ? */ dropbear_exit("Close for unknown channel"); @@ -567,14 +565,11 @@ * such as chansession or x11fwd */ void recv_msg_channel_request() { - unsigned int chan; struct Channel *channel; TRACE(("enter recv_msg_channel_request")) - chan = buf_getint(ses.payload); - channel = getchannel(chan); - + channel = getchannel(); if (channel == NULL) { /* disconnect ? */ dropbear_exit("Unknown channel"); @@ -666,12 +661,9 @@ /* We receive channel data */ void recv_msg_channel_data() { - unsigned int chan; struct Channel *channel; - chan = buf_getint(ses.payload); - channel = getchannel(chan); - + channel = getchannel(); if (channel == NULL) { dropbear_exit("Unknown channel"); } @@ -738,13 +730,10 @@ * as data is sent, and incremented upon receiving window-adjust messages */ void recv_msg_channel_window_adjust() { - unsigned int chan; struct Channel * channel; unsigned int incr; - chan = buf_getint(ses.payload); - channel = getchannel(chan); - + channel = getchannel(); if (channel == NULL) { dropbear_exit("Unknown channel"); } @@ -961,14 +950,12 @@ * successful*/ void recv_msg_channel_open_confirmation() { - unsigned int chan; struct Channel * channel; int ret; TRACE(("enter recv_msg_channel_open_confirmation")) - chan = buf_getint(ses.payload); - channel = getchannel(chan); + channel = getchannel(); if (channel == NULL) { dropbear_exit("Unknown channel"); } @@ -995,11 +982,9 @@ /* Notification that our channel open request failed */ void recv_msg_channel_open_failure() { - unsigned int chan; struct Channel * channel; - chan = buf_getbyte(ses.payload); - channel = getchannel(chan); + channel = getchannel(); if (channel == NULL) { dropbear_exit("Unknown channel"); }
--- a/common-kex.c Sun Mar 13 16:22:36 2005 +0000 +++ b/common-kex.c Sun Mar 13 16:23:19 2005 +0000 @@ -457,7 +457,6 @@ /* the rest of ses.kexhashbuf will be done after DH exchange */ ses.kexstate.recvkexinit = 1; -// ses.expecting = 0; // client matt TRACE(("leave recv_msg_kexinit")) } @@ -683,7 +682,7 @@ buf_eatstring(ses.payload); /* first_kex_packet_follows */ - if (buf_getbyte(ses.payload)) { + if (buf_getbool(ses.payload)) { ses.kexstate.firstfollows = 1; /* if the guess wasn't good, we ignore the packet sent */ if (!allgood) {
--- a/debug.h Sun Mar 13 16:22:36 2005 +0000 +++ b/debug.h Sun Mar 13 16:23:19 2005 +0000 @@ -39,7 +39,7 @@ * Caution: Don't use this in an unfriendly environment (ie unfirewalled), * since the printing may not sanitise strings etc. This will add a reasonable * amount to your executable size. */ - //#define DEBUG_TRACE +/*#define DEBUG_TRACE */ /* All functions writing to the cleartext payload buffer call * CHECKCLEARTOWRITE() before writing. This is only really useful if you're
--- a/dropbear.8 Sun Mar 13 16:22:36 2005 +0000 +++ b/dropbear.8 Sun Mar 13 16:23:19 2005 +0000 @@ -76,6 +76,6 @@ .br Gerrit Pape ([email protected]) wrote this manual page. .SH SEE ALSO -dropbearkey(8) +dropbearkey(8), dbclient(1) .P http://matt.ucc.asn.au/dropbear/dropbear.html
--- a/dropbearkey.8 Sun Mar 13 16:22:36 2005 +0000 +++ b/dropbearkey.8 Sun Mar 13 16:23:19 2005 +0000 @@ -42,6 +42,6 @@ .br Gerrit Pape ([email protected]) wrote this manual page. .SH SEE ALSO -dropbear(8) +dropbear(8), dbclient(1) .P http://matt.ucc.asn.au/dropbear/dropbear.html
--- a/dss.c Sun Mar 13 16:22:36 2005 +0000 +++ b/dss.c Sun Mar 13 16:23:19 2005 +0000 @@ -261,6 +261,7 @@ } #endif /* DROPBEAR_SIGNKEY_VERIFY */ +#ifdef DSS_PROTOK /* convert an unsigned mp into an array of bytes, malloced. * This array must be freed after use, len contains the length of the array, * if len != NULL */ @@ -279,6 +280,7 @@ } return ret; } +#endif /* Sign the data presented with key, writing the signature contents * to the buffer
--- a/kex.h Sun Mar 13 16:22:36 2005 +0000 +++ b/kex.h Sun Mar 13 16:23:19 2005 +0000 @@ -37,10 +37,10 @@ void kexdh_comb_key(mp_int *dh_pub_us, mp_int *dh_priv, mp_int *dh_pub_them, sign_key *hostkey); -void recv_msg_kexdh_init(); // server +void recv_msg_kexdh_init(); /* server */ -void send_msg_kexdh_init(); // client -void recv_msg_kexdh_reply(); // client +void send_msg_kexdh_init(); /* client */ +void recv_msg_kexdh_reply(); /* client */ extern const unsigned char dh_p_val[]; #define DH_P_LEN 128 /* The length of the dh_p_val array */
--- a/scp.c Sun Mar 13 16:22:36 2005 +0000 +++ b/scp.c Sun Mar 13 16:23:19 2005 +0000 @@ -244,9 +244,6 @@ extern char *optarg; extern int optind; - /* hack, seems to work */ -// __progname = argv[0]; - args.list = NULL; addargs(&args, "ssh"); /* overwritten with ssh_program */ addargs(&args, "-x");
--- a/session.h Sun Mar 13 16:22:36 2005 +0000 +++ b/session.h Sun Mar 13 16:23:19 2005 +0000 @@ -218,6 +218,10 @@ struct termios saved_tio; int stdincopy; int stdinflags; + int stdoutcopy; + int stdoutflags; + int stderrcopy; + int stderrflags; int winchange; /* Set to 1 when a windowchange signal happens */
--- a/svr-authpam.c Sun Mar 13 16:22:36 2005 +0000 +++ b/svr-authpam.c Sun Mar 13 16:23:19 2005 +0000 @@ -155,7 +155,7 @@ unsigned char changepw; /* check if client wants to change password */ - changepw = buf_getbyte(ses.payload); + changepw = buf_getbool(ses.payload); if (changepw) { /* not implemented by this server */ send_msg_userauth_failure(0, 1);
--- a/svr-authpasswd.c Sun Mar 13 16:22:36 2005 +0000 +++ b/svr-authpasswd.c Sun Mar 13 16:23:19 2005 +0000 @@ -71,7 +71,7 @@ } /* check if client wants to change password */ - changepw = buf_getbyte(ses.payload); + changepw = buf_getbool(ses.payload); if (changepw) { /* not implemented by this server */ send_msg_userauth_failure(0, 1);
--- a/svr-authpubkey.c Sun Mar 13 16:22:36 2005 +0000 +++ b/svr-authpubkey.c Sun Mar 13 16:23:19 2005 +0000 @@ -64,7 +64,7 @@ /* 0 indicates user just wants to check if key can be used, 1 is an * actual attempt*/ - testkey = (buf_getbyte(ses.payload) == 0); + testkey = (buf_getbool(ses.payload) == 0); algo = buf_getstring(ses.payload, &algolen); keybloblen = buf_getint(ses.payload);
--- a/svr-chansession.c Sun Mar 13 16:22:36 2005 +0000 +++ b/svr-chansession.c Sun Mar 13 16:23:19 2005 +0000 @@ -305,7 +305,7 @@ TRACE(("enter chansessionrequest")) type = buf_getstring(ses.payload, &typelen); - wantreply = buf_getbyte(ses.payload); + wantreply = buf_getbool(ses.payload); if (typelen > MAX_NAME_LEN) { TRACE(("leave chansessionrequest: type too long")) /* XXX send error?*/
--- a/svr-tcpfwd.c Sun Mar 13 16:22:36 2005 +0000 +++ b/svr-tcpfwd.c Sun Mar 13 16:23:19 2005 +0000 @@ -78,7 +78,7 @@ } reqname = buf_getstring(ses.payload, &namelen); - wantreply = buf_getbyte(ses.payload); + wantreply = buf_getbool(ses.payload); if (namelen > MAXNAMLEN) { TRACE(("name len is wrong: %d", namelen))
--- a/svr-x11fwd.c Sun Mar 13 16:22:36 2005 +0000 +++ b/svr-x11fwd.c Sun Mar 13 16:23:19 2005 +0000 @@ -52,7 +52,7 @@ return DROPBEAR_FAILURE; } - chansess->x11singleconn = buf_getbyte(ses.payload); + chansess->x11singleconn = buf_getbool(ses.payload); chansess->x11authprot = buf_getstring(ses.payload, NULL); chansess->x11authcookie = buf_getstring(ses.payload, NULL); chansess->x11screennum = buf_getint(ses.payload);