Mon Apr 5 11:43:12 1999 Niels Möller * src/werror.c (werror_hex): Bugfix. * src/service.c: Moved server-specific functionality to server.c. * src/server.c (make_service_request_handler): New function (replaces make_service_handler in service.c). (make_offer_service): New function (replaces the meta_service in service.c). * src/lsh.c (make_client_connect): Invoke commands to perform user authentication. * src/connection.c (handle_connection): Display packet type in debug messages. Uses packet_types.h. * src/command.h (COMMAND_RETURN, COMMAND_CALL, COMMAND_SIMPLE): Cast arguments to struct lsh_object *. * src/Makefile.am.in: Added packet_types.h and channel_commands.c. * src/client_userauth.c: Bent the user authentication mechanism into a command. * src/client.c (request_service): Rewrote as a command. Also removed some other old code. (make_request_service): Renamed function (was request_service()). Sun Apr 4 22:18:54 1999 Niels Möller * src/server.c (do_spawn_shell): Use the make_io_fd function. * src/lsh_writekey.c, src/sexp_test.c (main): Use the make_io_fd function. * src/tcpforward.c (do_tcpip_connected): Use the make_io_fd function. * src/lsh.c, src/lshd.c: Use the control language language. Commented out a lot of features that are currently broken. * src/keyexchange.c (make_kexinit_handler): Removed finished argument. * src/keyexchange.h (keyexchange_algorithm): Removed finished argument from the init method. * src/connection_commands.c (connection_line_handler): Removed continuation attribute. (do_line): Don't invoke any continuation here; return LSH_OK and let the keyexchange-init handlers do their work. (make_connection_read_line): Removed continuation argument. * src/connection_commands.c (connection_command): Added randomness attribute. (do_connection): Added call to connection_init_io. (make_handshake_command): Added randomness argument. * src/client_keyexchange.c (do_client): Removed finished attribute. (do_handle_dh_reply): Pass connection to the connection->established continuation (if non-NULL). * src/server_keyexchange.c (dh_server): Removed finished attribute. (do_handle_dh_init): Pass connection to the connection->established continuation (if non-NULL). * src/channel_commands.h (channel_open_command): Fixed declaration of the new_channel method. * src/channel.c (do_channel_open_confirm, do_channel_open_failure, init_channel): Use the channel_open_continuation attribute. * src/io_commands.c (do_listen, do_connect): Use new address_info2sockaddr_in() function. (do_listen): If listen() failes, return LSH_COMMAND_FAILED, and never invoke the command's continuation. (make_simple_listen): New function. (io_log_peer_command): New command. * src/lsh.h (LSH_COMMAND_FAILED): New status code. * src/io.c (get_portno): New function. (tcp_addr): Commented out this function. (make_address_info_c): New function. (sockaddr_in2address_info): Renamed from sock (sockaddr2info): Fixed bug in format string. (address_info2sockaddr_in): New function. * src/format.c (format_decimal): New function (previously duplicated in several places). (ssh_format): New format %di to write decimal integers. (write_decimal_length): Use the format_decimal() function. * src/werror.c (werror_decimal): Use the format_decimal() function. Fri Apr 2 17:00:13 1999 Niels Möller * src/make_class (process-expr): Fixed handling of the PARAMS attribute. Declare generated functions static. * src/io_commands.c (make_simple_connect): New function. Tue Mar 30 21:48:08 1999 Niels Möller * src/read_line.c (do_read_line): Bug fix noticed by Bazsi. Fri Mar 26 03:05:16 1999 Niels Möller * src/io_commands.c (listen_command_callback): Added BACKEND variable. (do_connect): New function. * src/client_keyexchange.c (do_handle_dh_reply): Invoke the connection's ESTABLISHED continuation if the key exchange is successful. (dh_client_exchange, do_init_client_dh): Removed FINISHED attribute. * src/command.c, src/command.h (command_die_on_null): New command. Don't know how useful it is. * src/connection.c (make_ssh_connection): Take a continuation as argument. * src/connection.h (ssh_connection): Added an ESTABLISHED continuation, which replaces the FINISHED field previously found in the keyexchange-related objects. * src/keyexchange.c (kexinit_handler): Removed the FINISHED attribute. (initiate_keyexchange): Deleted some of the arguments. The kexinit is found inside the connection object, and so is any first_kex_packet. * src/keyexchange.h: Changed the MAKE_KEXINIT method back. Added a first_kex_packet field to the kexinit object, which may be filled in by MAKE_KEXINIT. Wed Mar 24 02:56:41 1999 Niels Möller * src/channel_commands.c, src/channel_commands.h: New files. * src/client.c (session_open_command): New class. * src/channel.h (ssh_channel): Replaced the open_confirm and open_failure methods with a command_continuation. * src/connection_commands.c: New file. The connection_command unifies some of the logic from in client.c and server.c. * src/io.h (address_info): New class. (fd_listen_callback): Use address_info rather than struct sockaddr. * src/io.c (make_io_fd): New function. (io_read_write, io_read, io_write): Now takes a io_fd as argument, rather than a numerical fd. * src/keyexchange.h (make_kexinit): New definition of the MAKE_KEXINIT method. Should create and register a kexinit message, and return a string consisting of this message and any extra speculative message. Should not actually write anything. Tue Mar 23 03:12:15 1999 Niels Möller * src/io_commands.c, src/io_commands.h: New files, for listen and connect commands. Fri Mar 19 18:15:38 1999 * src/make_class (process-expr): Generate code using more combinators. Fri Mar 19 01:03:50 1999 Niels Möller * src/combinators.c: New file. Implemented all of the I, K, S, B, C S', B' and C' combinators. * src/command.c, src/command.h: Added collect_info_N and collect_state_N (n=1, 2, 3, 4) to handle builtin functions that need to collect some arguments before actually doing anything. Wed Mar 17 00:07:07 1999 Niels Möller * src/compiler.scm (let-and): New macro. (match): Simple pattern matcher for optimizations. (optimize): New optimizer. (preprocess): Use the formal arguments in the right order. * src/algorithms.c: Enable CAST. Bug fixes. Tue Mar 16 03:36:20 1999 Niels Möller * src/publickey_crypto.c (dh_process_server_msg, dh_process_client_msg): Use GROUP_MEMBER to determine if dh-values are valid. Currently, this method checks the size of the number, but doesn't check that is indeed a member of the cyclic subgroup used. * src/read_packet.c (do_read_packet): Handle the case where the first block contains an entire ssh packet (happens with twofish). * src/tcpforward.c (tcpforward_foo): Use COMMAND_UNIMPLEMENTED, so that the expression compiles. * src/make_class (output-expression): Bug fix. * src/io.c (do_read): Warn when called with a zero length. * src/command.c (command_unimplemented): New command (which aborts if called). Mon Mar 15 00:56:18 1999 Niels Möller * src/digit_table.c (main): Fixed hex digits a-f. * configure.in: Disabled the AM_MAINTAINER_MODE macro. Sun Mar 14 21:04:58 1999 Niels Möller * README (ZLIB): Added canonical location of zlib (James Young). Fri Mar 12 17:03:47 1999 Niels Möller * configure.in: Added AM_MAINTAINER_MODE (Ray). Added changequote calls when testing for specific utmp fields (Ray). Tue Mar 9 06:25:11 1999 * doc/TODO: Fixed typo. Sun Mar 7 20:32:52 1999 * src/cast.c: New. * src/Makefile.am.in, src/crypto.c, src/crypto.h, src/algorithms.c: Adapted for CAST-128. * src/symmetric/include/cast.h, src/symmetric/cast.c: Added consts. Added cast_selftest(). * src/symmetric/twofish.c (twofish_selftest): Fixed. * src/io.c, src/read_line.c, src/read_packet.c, src/read_scan.c: Added asserts to ensure read() is called with a length > 0. * doc/TODO: Removed the entry about CAST's patent status. RFC 2144 doesn't mention patents, and the abstract suggests CAST-128 is unencumbered. * doc/TODO, src/userauth.h: Fixed typos. Fri Mar 5 20:09:09 1999 * src/symmetric/twofish.c: Buglet fix by Ruud. * make_am: Inserted space required for latest bash. (Noted by Ruud) Fri Mar 12 02:00:53 1999 Niels Möller * src/tcpforward.c (tcpforward-foo): Added a first test expression for the compiler. * src/make_class: Changed the magic tag. Now is "/* GABA:". (process-expr): New function interfacing to compiler.scm. (process-input, process-class): Splitted the process-class function into several functions. * src/command.c (gaba_apply, gaba_apply_S_1, gaba_apply_S_2): New functions, to be called by automatically generated code. (command_K, command_K_1) : Implemented the K combinator. Thu Mar 11 18:07:25 1999 * src/bignum.c (bignum_next_prime): Fixed off-by-one overflow. Wed Mar 10 17:26:59 1999 * src/command.c (do_call_simple_command): COMMAND_CALL method for any command_simple instances. Thu Mar 11 03:01:00 1999 Niels Möller * src/server_pty.c (tty_setctty): Fixed error message. * src/command.c: Made the builtin commands instances of command_simple, which means that they can return results directly, without any continuation function. Wed Mar 10 17:26:59 1999 * src/command.h (command_simple): New class. Like command, but can return a value immediately, rather than using a continuation function. (STATIC_COMMAND_SIMPLE): New macro to define a static command. Tue Mar 9 22:18:40 1999 * src/command.c (make_apply): New function. Implemented the S and B combinators (no idea if they will turn out to be useful), and a listen function. * src/server.c (server_initiate, make_server_callback): Use new fd_listen_callback type. * src/io.h (fd_listen_callback): New class. * src/io.c (tcp_addr): Moved this function from tcpforward.c. (listen_callback): Pass the peer address to the listen callback. Mon Mar 8 19:22:30 1999 * src/publickey_crypto.c (make_zn): New argument: order. Mon Mar 8 00:29:17 1999 Niels Möller * src/command.c: New file. * src/io.c (write_callback): Use the write_buffer_consume() function. * src/resource.c, src/resource.h, src/write_buffer.c, src/write_buffer.h: Use struct lsh_queue. * src/write_buffer.h (write_buffer->length): New instance variable. * src/write_buffer.c (write_buffer_consume): New function. * src/queue.c, src/queue.h: New files. Generic doubly linked list. Sun Mar 7 15:21:43 1999 Niels Möller * src/werror.c (werror_decimal): Bug fix. * src/server.c (do_open_session): Adapted to the new CHANNEL_OPEN convention. (make_server_connection_service): Renamed (was make_server_session_Service). (server_connection_service): New instance variable, backend. Needed for tcp forwarding. * src/io.c (io_read_write): Changed return type to struct io_fd * (Bazsi). * src/tty.h (CFMAKERAW): Set the VMIN and VTIME attributes. * src/tcpforward.c, src/tcpforward.h: New files (Bazsi). * src/channel.h (channel_open_callback): New class, for opening new channels asyncronously. * (channel_open): Handler method now takes a channel_open_callback argument. * src/channel.c (channel_open_response): New class. (format_global_success): New function. (do_channel_open_response): New function. (make_channel_open_response): New function. (do_channel_open): Moved most processing into do_channel_open response. Fri Mar 5 03:23:06 1999 Niels Möller * src/symmetric/twofish.c, src/symmetric/twofish.h (twofish_selftest): Made non static. (twofish_setup): Removed memory allocation. Instead, a TWOFISH_pointer is given as an argument. (twofish_encrypt, twofish_decrypt): Use correct pointer types. No void * or casts. * src/symmetric/Makefile.am.in (noinst_PROGRAMS): Added twofish_test and generate_q. (Makefile.am): Updated the rule for this target. * src/twofish.c (twofish_instance): Include the context struct directly in the instance, without extra indirection. * src/crypto.c: Marked this file as obsolete. * src/algorithms.c (default_crypto_algorithms): Added ATOM_TWOFISH_CBC and ATOM_IDEA_CBC. Wed Mar 3 13:26:02 1999 * src/symmetric/twofish.c, src/symmetric/include/twofish.h: New. LGPL-ed Twofish implementation by Ruud de Rooij . * src/twofish.c: New. Based on src/blowfish.c . * src/atoms.in, src/Makefile.am.in, src/algorithms.c, src/crypto.c, src/crypto.h: Updated for Twofish. Mon Mar 1 01:36:54 1999 Niels Möller * src/publickey_crypto.c (init_diffie_hellman_instance): Include length fields when hashing. * src/publickey_crypto.c: Some support for broken ssh2 signatures (Bazsi). (generic_dsa_sign): New function. (do_dsa_sign_kludge): New function. (make_dsa_signer_kludge): New function. * src/client_keyexchange.c (do_init_client_dh): Renamed the do_init_dh function. * src/keyexchange.h (keypair_info): New type. * src/keyexchange.c (do_handle_kexinit): Added ssh2-dss kludge (Bazsi). (make_keypair_info): New function. * src/lshd.c: Deleted old code. Use a keypair_info alist for the host key(s). * src/server_keyexchange.h, src/server_keyexchange.c: Use a keypair_info alist. * src/format.c (ssh_format): Added 'u' modifier, for unsigned bignums. * src/connection.h (connection): Replaced the client_version and server_version fields with an array. * src/atoms.in: Added ssh-dss-kludge atom (used for supporting buggy ssh2 versions). * configure.in: Test for syslog.h. New --with-ssh2-dsa-kludge option. Sun Feb 28 19:29:36 1999 * configure.in: Fixed struct utmp member tests. * misc/Makefile.am.in: Include ctags.mk. * src/symmetric/twofish.c, src/symmetric/include/twofish.h: New. Placeholders. * src/symmetric/Makefile.am.in: Updated for twofish. * src/atoms.in: With the updated draft, 256-bit TwoFish is now recommended. Sun Feb 28 20:01:32 1999 Niels Möller * src/cvs_headers, src/used_headers: Fixes for compatibility with non-GNU sed. Sat Feb 27 04:43:25 1999 Niels Möller * src/werror.c, src/werror.h (set_error_ignore): New function. * src/string_buffer.c (string_buffer_clear): Bug fix. * src/server_pty.h (pty_info): Use string type for the tty_name field. * src/server_pty.c (pty_allocate): Save the file name of te slave tty. Corrected the returned values. (tty_setctty): Ugly "fix" in the SysV-version of this function. Better error messages. * src/server.c (do_spawn_shell): Do child's pty handling before closing fd:s. Pass struct pty_info to tty_setctty(). More debug. * AUTHORS, src/reaper.c: Fixed typos. (Ray) * configure.in, acconfig.h: Check for ut_addr_v6 in struct utmp; check for utmpx.h . Fixed openpty check. Check for syslog(). (Ray) Mon Feb 22 22:49:09 1999 Niels Möller * src/werror.c (werror_hex): Was completely broken. Fixed. * configure.in: Fixed uses of AC_TRY_COMPILE. Thu Feb 18 21:48:54 1999 * (many files): Updated FSF address. * AUTHORS: added getopt origin. * configure.in, acconfig.h: Check for ut_addr_v6 in struct utmp; check for utmpx.h . Fixed openpty check. Check for syslog(). Fixed utmp variations detection. * doc/DSA.5, doc/SHA.5, doc/SPKI.5, doc/lsh.1, doc/lsh_keygen.1, doc/lsh_writekey.1, doc/lshd.8, doc/secsh.5: New. * src/server.c: Include strings.h if available (for bzero()); utmp support; uptmx support. * AUTHORS, src/reaper.c: Fixed typos. Thu Feb 18 03:35:45 1999 * src/zlib.c: Reorganized. Now uses string_buffer for allocation. * src/xalloc.c (debug_malloc, debug_free): Allocate memory in units of long. Hopefully, this should solve the alpha alignment problems. * src/werror.c: Initial syslog support. (write_syslog): New function (Ray). (set_error_syslog): New function. * src/tty.c (tty_encode_term_mode): New implementation, by Keresztg. * src/string_buffer.c, src/string_buffer.h: New files. Handling of strings whose lengths are not known in advance. Currently used only by zlib.c. * src/server_pty.c (pty_allocate): Added Ray's UNIX98-style pty allocation. (tty_setctty): Moved from tty.c, and adapted to SysV/UNIX98. * src/memcmp.c: Copied implementation from GNU textutils. * src/abstract_crypto.c (memxor): Moved this function into a separate file. * make_am: Use a less efficient, but appearantly more rubust method to generate the .dist_headers files. * configure.in: Added tests for syslog, utmp, unix98/sysv ptys, and fixed zlib configuration. Tue Feb 16 23:32:51 1999 * src/tty.h, src/tty.c: Fallback macro for the cfmakeraw function. * src/lsh.c, src/lshd.c: Make it possible to disable pty support a compile time. * src/zlib.c: Temporarily disable zlib support, as it is a dysfunctional state at when I'm building the 1999-02-16 snapshot. * src/channel.h, optionchannel.c, optionconnection.c, optionclient.c: Moved the channel table pointer to the connection object, and general cleanup (Bazsi). * configure.in: New option --without-pty to disable pty support. * make_am, Makefile.am.in: Use BASH variable to start scripts. * misc/ctags.mk: New file. Sat Feb 13 17:21:07 1999 * configure.in: Added test for the cfmakeraw function. * src/client.c (CFMAKERAW): Define this as a macro, if there is no cfmakeraw function. (Rafal Maszkowski ) * configure.in: Check if libutil defines openpty. * src/server.c (do_spawn_shell): Use STDIN_FILENO when calling tty_setctty, not pty->slave. The latter fd is already closed. (Noted by Keresztg). * configure.in (SHUTDOWN_WORKS_WITH_UNIX_SOCKETS): Use AF_UNIX, not AF_LOCAL (reported by Heinz Knutzen ) Thu Feb 11 14:43:51 1999 * src/channel.c (do_channel_request): Delay freeing of packet (reported by Ray Dassen). Sun Jan 31 04:25:30 1999 * src/werror.c (werror_vformat): New function, with different format specifiers than standard printf. Many more specialized public functions removed. * src/format.c (format_size_in_decimal): Renamed and exported the size_in_decimal() function. * src/charset.c: New function. (low_utf8_to_local): New function. (utf8_to_local): New argument STRICT. Thu Jan 28 08:51:18 1999 * src/tty.c (tty_encode_term_mode): New function (dummy). (tty_decode_term_mode): New function (moved from server_pty.c). * src/server.c (do_spawn_shell): pty support. Support for the argv0 = "-*sh" convention. (make_pty_handler): New function. * src/parse.c (parse_uint8): Use unsigned for the result. * src/lshd.c (main): Integrated sshd1 and pty support. * src/lsh.h (LSH_CHANNEL_CLOSE): New status value. * src/lsh.c (main): pty support. * src/hmac.c (make_hmac_instance): Bug fix (Joseph Galbraith ) * src/encrypt.c (do_encrypt): Update sequence number even if no mac is in use. (Reported by Joseph Galbraith ). * src/client.c (make_shell_request): New function. (make_pty_request): New function. (do_open_confirm): Handle the new linked list of channel requests. (request_info): New class. * src/channel.c (channel_process_status): Handle LSH_CHANNEL_CLOSE. (do_channel_success, do_channel_failure): Ignore messages that there is no handler for (most likely, becase we have decided to give up and close the channel). * src/Makefile.am.in: Removed most program_SOURCES definitions. * configure.in: Commented out the sshd1 related tests. * configure.in: Check for openpty(). Test for BSD style pty names. 1999-01-19 Gordon Matzigkeit * server.c (do_spawn_shell): Make sure session->user->shell is not null before we dereference it. Set argv[0] to be the shell name wth a prepended hyphen. 1999-01-19 Gordon Matzigkeit * src/Makefile.am: Don't clobber files unless the new one was correctly regenerated. Tue Jan 26 06:11:47 1999 * client_pty.c client_pty.h server_pty.c server_pty.h tty.c tty.h: Added new files. 1999-01-21 Gordon Matzigkeit * src/server.h: Always include ssh1_fallback.h, and fix typo. * src/server.c (server_initiate): If we need to delay the key exchange, initialize a kexinit here and save it in CONNECTION->KEXINITS[CONNECTION_SERVER] until DO_LINE has a chance to use it. * src/connection.c (make_ssh_connection): Use macros rather than magic numbers to index KEXINITS and LITERAL_KEXINITS. * src/server.c (do_line): Fix transposed arguments and missing comma in SSH1_FALLBACK call. * acconfig.h: Remove references to SSHD1. * configure.in: Get rid of all the checks for SSHD1. The user should supply it at runtime. * src/lshd.c (main): Implement the `--ssh1-fallback' flag to allow people to specify an sshd1 at runtime. * src/version.h (SSH1_SERVER_PROTOCOL_VERSION): Only use version 1.99 if we were told to fallback to ssh1. * src/ssh1_fallback.h: SSHD1 does not need the port number because we invoke it as if we were inetd. src/ssh1_fallback.c: Likewise. Tue Jan 19 16:12:16 1999 * src/read_line.h: Changed prototype for line handlers. * src/read_line.c (do_read_line): Changed prototype for line handlers. * src/client.c (do_line): Changed prototype for line handlers. * src/server.c (server_initiate): Pass fd and fallback object to make_server_read_line. (server_initiate): If ssh1 fallback is enabled,delay initiate_keyexchange until after that the clients version string has been received. (do_line): Do the delayed initiate_keyexchange now. (do_line): Invoke the fallback method. * src/ssh1_fallback.h, src/ssh1_fallback.c: New files. Thu Jan 14 13:48:04 1999 * doc/lsh.1, doc/lsh_keygen.1, doc/lsh_writekey.1 doc/DSA.5, doc/SHA.5, doc/secsh.5, doc/lshd.8: new. Thu Jan 14 09:09:06 1999 * lsh_keygen.c (usage, main): The algorithm employed is called DSA, not DSS. DSS is the name of the standard that describes DSA. Sat Jan 9 16:12:16 1999 * server.c (do_line) Rearranged SSH1 fallback skeleton code. * io.c (read_callback), reaper.c: Fixed typos. * lib/Makefile.am.in, include/Makefile.am.in: added rule for making .dist_headers (via the toplevel Makefile). Fri Jan 8 22:26:44 1999 * Makefile.am.in (depend): Run "make depend" in lib too. "make dist" now works out of the box. * server.c (do_line): Started SSH1 fallback code. Thu Jan 7 20:16:10 1999 * Makefile.am.in: remove .dist_classes and the various .dist_headers and Makefile.am's as part of maintainer-clean. Added rule to remake the various Makefile.am's from the toplevel dir. * Makefile.am.in, lib/Makefile.am.in, include/Makefile.am.in (ctags): Improved the ctags generation. Wed Jan 6 22:03:16 1999 * Makefile.am.in: Added rules to generate .dist_classes and the various .dist_headers . Added dist-hook target which depends on these to get "make dist" closer to being sane. * make_am: Don't output the double backslash for continuation when ./cvs_headers or ./used_headers output is empty, so no broken Makefile.am's are generated (due to the definition of cvs_headers and/or dist_x_files assimilating the text following them/it). Tue Jan 5 19:12:36 1999 * Makefile.am.in: New try at building dependency files. Tue Jan 5 18:26:01 1999 * NEWS, connection.c, keyexchange.c, zlib.c: Fixed typos. Tue Jan 19 03:20:29 1999 * make_am: Recurse to find all subdirectories *before* invoking the used_headers script. Thu Jan 14 04:36:41 1999 * dss_keygen.c (dss_nist_gen): Fixed off-by-one bug, discovered by "Joseph Galbraith" . * configure.in: Check for poll.h, sys/poll.h and crypt.h. Mon Jan 11 15:35:02 1999 * Makefile.am.in (EXTRA_DIST): Add jpoll.c, jpoll.h, getopt.h, getopt.c and getopt1.c to the distribution. * io.c (get_inaddr): Check HAVE_INET_ATON. Sun Jan 10 21:56:37 1999 * lshd.c (usage): Improved message. (read_host_key): New function. (main): Read host key from a file. * sexp.c (sexp_n, sexp_un): Renamed and fixed this functiom (doesn't use ssh_format anymore). (sexp_sn): Implemented. (sexp_assz): New function. (sexp_get_un): New function. * io.c (blocking_read): New function. Fri Jan 8 09:44:12 1999 * sexp_streamed_parser.c (base64_decode): Fixed test for leftover bits. * configure.in (CPPFLAGS): Add -I$srcdir (needed for lsh_types.h to be found, when compiling in subdirectories, with VPATH). * sexp.c (sexp_contents): New function. (sexp_display): New function. (do_vector_get): Use CAST_SUBTYPE. (sexp_eqz): New function. (sexp_check_type): New function. * read_scan.c (do_read_scan): Check if the current scanner is NULL _after_ scanning each character. * bignum.h: Fix tests for gmp2/gmp.h (patches from Kalle Olavi Niemitalo ). Thu Jan 7 16:25:50 1999 * sexp_streamed_parser.c: Added base 64 decoder. * sexp.c (encode_base64): Bug fix (don't use several ++ in an expression without sequence points). * read_scan.h (TOKEN_NONE): New constant (used by the base64 decoder). Tue Jan 5 05:54:34 1999 * keyexchange.c (kex_make_key): Fixed key expansion. * des.c (make_des_instance): Fix _odd_ parity. * cbc.c (do_cbc_encrypt): Bug fix. (do_cbc_decrypt): Handle the case src == dst correctly. * cascade.c (do_make_cascade): Make sure keys are applied in the right (i.e. reversed) order when decrypting. * Makefile.am.in (depend): Disabled the rule to explicitly build dependency files. Sun Jan 3 16:54:29 1999 * digit_table.c: Fixed declaration of main. * Makefile.am.in: remove .x files as part of maintainer-clean. * Makefile.am.in, lib/Makefile.am.in, include/Makefile.am.in: added support for ctags. * configure.in: Remove superfluous spacing in compiler warnings. * version.h, client.c (client_initiate), server.c (server_initiate): Split PROTOCOL_VERSION in CLIENT_PROTOCOL_VERSION and SERVER_PROTOCOL_VERSION, so the client won't report version 1.99 . * configure.in: Look for SSH1 daemon as plain `sshd' too. Test that it is usable. Sat Jan 2 18:25:16 1999 * TODO: Added logging; Noted we can't currently use Rivest's sexp code. * resource.h, lsh_types.h: fixed typo. * Makefile.am.in, lib/Makefile.am.in: Added pattern rule for dependencies; added phony target `depend' to force dependencies to be remade; remove dependency files (.P) as part of maintainer-clean. Fri Jan 1 18:08:03 1999 * acconfig.h, configure.in, server.c, version.h: Added skeleton for SSH1 fallback support. * TASKLIST: Added SSH1 fallback support. * configure.in: Rewrote the comment about _GNU_SOURCE . * AUTHORS, HACKING, NOTES, README, TODO: spelling, grammar fixes. * TASKLIST: We have zlib support now. Mon Jan 4 11:25:43 1999 * werror.c: Avoid using stdio functions. * keyexchange.c (make_test_kexinit): Commented out this function. * io.c (write_raw): New function. (write_raw_with_poll): -"- * alist.c (alist_addv): New function. (alist_add): -"- Fri Jan 1 04:20:10 1999 * make_char_classes (make-char-classes): Use #ifdef to separate the table from the #defines. * lsh_types.h (LSH_PARSED_OBJECT): New status code. * io.c: Include lsh headers *before* system headers. Use jpoll.h, not poll.h. * io.c: (get_inaddr): Use inet_aton. How portable is that? * poll.h, poll.c, pollemu.h, pollemu.c: Use the names jpoll (that is the names used originally by Sean Reifschneider ). Thu Dec 31 15:29:59 1998 * PORTS: new file. * io.c: #include "config.h" so the #ifdef HAVE_POLL works. * poll.h, pollemu.h: Renamed poll.h to pollemu.h; thus it will not be found instead of a system poll.h whith -I. or -I$(srcdir) . * pollemu.c, pollemu.h: Renamed too. * io.c, pollemu.c: Changed #include accordingly. * configure.in: Changed accordingly. * configure.in: check for `gethostbyname' instead of `hostbyname'. * io.c: define INADDR_NONE if the system doesn't provide it (e.g. Solaris). * io.c: #include for struct in_addr. Wed Dec 30 17:38:03 1998 * io.c (get_inaddr): use symbolic constant to check inet_addr result; fixes name resolving on Linux/Alpha. Thu Dec 31 00:06:43 1998 * server.c (do_open_session): Mark arguments as UNUSED. * read_packet.c (do_read_packet): Signedness fixes. * publickey_crypto.c (make_dss_verifier): Mark closure algorithm as UNUSED. * packet_ignore.c (do_ignore): Mark arguments as UNUSED. * make_class (do-struct-free-function, do-struct-mark-function): Avoid warnings about unused parameters when the generated functions are empty functions. * keyexchange.c (kex_make_key): Signedness fix. * io.c (get_inaddr): Use the protocol argument. * disconnect.c (do_disconnect): Mark arguments as UNUSED. * des.c (make_des_instance): Mark arguments as UNUSED. * debug.c (do_rec_debug): Mark arguments as UNUSED. * connection.c (do_fail): Marked connection argument UNUSED. * configure.in (CPPFLAGS): Add more warning flags. But *not* -Wcast-align. * client_userauth.c (do_userauth_banner): Marked connection argument UNUSED. * client_password.c (read_password): Marked max_length argument UNUSED. * client.c (client_close_die): Marked closure argument UNUSED. * channel.c (do_window_adjust): Marked connection argument UNUSED. (do_channel_data): -"- (do_channel_extended_data): -"- (do_channel_eof): -"- (do_channel_close): -"- (do_channel_open_confirm): -"- (do_channel_open_failure): -"- (do_channel_success): -"- (do_channel_failure): -"- * arcfour.c (make_arcfour_instance): Mark mode argument UNUSED. * io.c (get_inaddr): use symbolic constant to check inet_addr result; fixes name resolving on Linux/Alpha. Wed Dec 30 11:57:28 1998 * atoms.in: added algorithms names used by SSH 2.0.11 (commented out). * configure.in: Enable a few more warnings. * lib/desTest.c (method, encode, decode): ANSIfied function declarations. * include/des.h, desCode.h, desKerb.c, desQuick.c, desTest.c, desUtil.c, desdata.c, desinfo.h: The DES code's copyright notice is distributed in descore.README rather than plain README. * abstract_crypto.c (gcd): Avoid unsigned underflow. * sexp.c, sexp.h (sexp_nullp, sexp_c, sexp_a, sexp_z, sexp_n, sexp_sn, sexp_format, encode_base64): Added const. * TODO: removed obsolete entries; made a separate section for freeness issues, and noted scsh's non-freeness. * TASKLIST, TODO: Fixed typos. Wed Dec 30 01:14:28 1998 * lsh_types.h (LSH_SYNTAX): New error code. * lib/desTest.c (now): Disable use of rusage. * sexp.c: Started on parser. Not at all working yet. * sexp.h (sexp_iterator): Added iterator abstraction. * lsh_types.h (MAX): Bug fix (by ceder). Mon Dec 28 14:14:57 1998 * keyexchange.c (kex_make_key): Expand keys, when the required key length is longer than tha hash output. (Bazsi). Sun Dec 27 06:37:40 1998 * compress.c (packet_compressor): Removed the mode variable. * server.c (do_line): Compression support. * make_class: New type special-struct. * lsh.c (main): Zlib support. * lshd.c (main): Zlib support. * keyexchange.c (kex_make_deflate): New function. (kex_make_inflate): New function. (do_handle_newkeys): Compression support. (make_newkeys_handler): -"- (do_install): -"- * compress.h, compress.c, abstract_compress.c, abstract_compress.h, zlib.h, zlib.c: New files (by Bazsi). * connection.c (connection_init_io): Compression support. * client.c (do_line): Compression support. * client.c (do_exit_signal): Send CHANNEL_EOF. * configure.in: Fixed the configure test for shutdown. Check for zlib. Sat Dec 26 02:37:18 1998 * keyexchange.c (do_install): Bugfix: Look at closure->is_server when generating MAC-keys (noted by Bazsi). * lsh_keygen.c (main): Added getopt support. New options for algorithm and output style. Wed Dec 23 23:06:45 1998 * format.c (ssh_vformat_length): Added 'd' modifier, for sexp-style length prefixes. (ssh_vformat_write): -"- Sun Dec 20 20:11:02 1998 * arcfour.c, blowfish.c, cascade.c, cbc.c, des.c, hmac.c, md5.c, sha.c: New files, extracted from crypto.c and abstract_crypto.c. * server.c (do_line): Accept client version 1.99, if DATAFELLOWS_SSH2_GREETING_WORKAROUND is defined. * randomness.c (make_poor_random): Allow NULL init string. Use pid for seeding. (make_device_random): New function. (make_reasonably_random): New function. * bignum.c (bignum_write): New function. (bignum_random_size): New function. (bignum_small_factor): New function. (bignum_next_prime): New function. * Makefile.am.in (noinst_LIBRARIES): Collect most object files into liblsh.a. Fri Dec 18 01:53:22 1998 * server.c (do_eof): Consider closing (if CHANNEL_SENT_EOF and CHANNEL_CLOSE_AT_EOF are both set). * keyexchange.c (make_test_kexinit): Added hmac-md5 to the list of acepted mac algorithms. * io.h (CLOSE_EOF): Changed the meaning of this constant. Now used also for EOF on writing. * io.c (prepare_write): Use the close_reason CLOSE_EOF when a closed write_buffer has been flushed successfully. * io.c (write_callback): Report EPIPE and other write failures differently. * crypto.c: Added md5 support by Balazs Scheidler. * client.c (do_exit_status): Bugfix: Changed && to &. * channel.c (channel_close_callback): Don't close channel when a connected file is closed when we expect it. * resource.c (do_free_resources): *Never* call lsh_object_free, except from the gc_sweep function! Thu Dec 17 16:27:22 1998 * server.c (make_process_resource): New function. (server_die): Kill resources associated with the connection. (do_close): New callback function till kill the process if the channel is closed unexpectedly. server.c (do_exit_shell): Don't close the process's stdin, or the channel, until the client asks for it. * server.c (make_server_close_handler): Take connection as argument. Wed Dec 16 01:33:25 1998 * resource.h, resource.c: New files. * channel.h (CHANNEL_CLOSE_AT_EOF): This flag now means that the channel should be closed when EOF have been both sent and received. * channel.c (channel_eof): New meaning of CHANNEL_CLOSE_AT_EOF flag. * client.c (do_exit_status): Send eof, if we haven't done that already. * channel.c (do_channel_eof): Don't initiate close automatically when eof has been both sent and received. * list.c (make_int_listv): New function (make_object_listv): New function * keyexchange.c (do_install): Unified key installation. * client_keyexchange.c (do_handle_dh_reply): Better handling of weak keys (i.e. INSTALL_KEYS() returning NULL). * server_keyexchange.c (do_handle_dh_init): -"- Tue Dec 15 00:01:33 1998 * xalloc.c (lsh_list_alloc): Avoid unsigned under flow when length is zero. Mon Dec 14 21:58:27 1998 * parse.c (parse_atom_list): New limit argument; longer lists will return NULL. Sat Dec 12 11:11:23 1998 * configure.in: Clarified comment. Added several warnings. * keyexchange.c (select_algorithm): Had a terminiation condition "i < LIST_LENGTH(client_list) >= 0" in a for loop, which is probably nonsensical. Removed >= 0 part. * lsh_types.h: Introduced UNUSED annotation. Enable GNU libc extensions. Note: lsh_types.h must be included before any system header for this to work properly. * Makefile.am.in: Make gperf produce ANSI C output, and postprocess it to fully initialise wordlist. * lshd.c, lsh.c: Added a short usage string. * include/crypto_types.h: Improved error messages. * process_atoms: removed `.sh' from generator name in output. * include/idea.h, lib/idea.c: Added note about IDEA being patent encumbered. * channel.c, keyexchange.c, lib/md5.c, lib/sha.c, pad.c, parse.c, randomness.c, write_buffer.c: #include for memcpy(). * bignum.c: #include for alloca(). * server_password.c: #include * io.c, reaper.c: Removed obsolete use of sa_restorer field of struct sigaction. (This broke compilation on Linux/Alpha with glibc 2.0.high). Initialised struct sigaction in a more portable fashion. * bignum.c, charset.c, client_userauth.c, format.c, format.h, io.c, list.c: Signedness/type fixes. * channel.c, client.c, client.h, debug.c, debug.h, disconnect.c, disconnect.h, format.c, format.h, keyexchange.c, keyexchange.h, process_atoms, server.c, server.h, werror.c, werror.h: Constness improvements. * client_userauth.c, format.c: Added internal prototypes. * crypto.c: Added UNUSED annotations. * lib/util.c, lib/util.h, include/types.h: New. Bridge from GPG style to lsh style, for blowfish. * include/blowfish.h, lib/blowfish.c: Added blowfish code from GPG. * crypto.c, crypto.c.x, crypto.h, lib/Makefile.am.in, lshd.c, lsh.c: Added blowfish support. * lib/Makefile.am.in: added dependency of desUtil.o on the generated DES header files. * TODO: Additions. * Various spelling fixes. Tue Dec 8 10:29:50 1998 * server_password.c (lookup_user): Integrated support for shadow passwords, by Keresztg . * server.c (do_exit_shell): Close channel, if we have already sent EOF. * xalloc.c (lsh_object_clone): New function. * server_keyexchange.c (do_init_dh): Copy the server key (as strings can't be shared). * crypto.c (do_sha_copy, ): Use the CLONE macro instead of memcpy to copy instances. (do_hmac_copy): -"- Fri Dec 4 02:30:28 1998 * (practically every file): Adapted to new gc and object system. * xalloc.c (lsh_object_check_subtype): Allow NULL pointers. They are occasionally permissible (for instance, the NULL crypto algorithm), and when they aren't the error will be detected early anyway. (lsh_object_check): -"- * keyexchange.c (do_handle_kexinit): Use an object_list for passing around the selected algorithms. The void ** that was used earlier was unfriendly to the gc. Sun Nov 22 00:57:16 1998 * lsh.c (main): Bug fix (pass *address* of crypto_rc4_algorithm). Thanks to Keresztg . * lshd.c (main): -"- * lsh_types.h: Moved definitions of UINT* to include/crypto_types.h. * io.c: Use Sean Reifschneider's poll-by-select emulation if poll() is unavailable.