2001-09-04 Niels Möller * Released lsh-1.3.4. 2001-09-04 Niels Möller * doc/lsh.texinfo: Updated for 1.3.4. In particular, added doc on X forwarding, -x, -B, and --log-file options, and encrypted private keys. Deleted the paragraph about the obsolete --userauth option. * src/client.c (client_command_session): Ask for a pty also for (supposedly non-interactive) exec sessions. 2001-09-03 Niels Möller * src/xauth.c (xauth_process): New function, using XauReadAuth. (xauth_lookup): Use xauth_process instead of XauGetAuthByAddr. * src/client_x11.c (make_client_x11_display): Initialize the fake cookie properly. * src/xauth.h: New file with the xauth_lookup prototype. * src/xauth.c (xauth_lookup): Deleted address_length argument. Bug fixes. 2001-09-03 Niels Möller * src/xauth.c: Rewrote to use libXau. * src/client_x11.c (client_x11_auth_info): Deleted class; merged with client_x11_display. (parse_display): Take a client_x11_display as argument. Do xauth lookup. (get_client_x11_auth_info): Deleted function. * src/client.c (DEFINE_CALLBACK): Declare self argument as UNUSED. * src/Makefile.am.in (liblsh_a_SOURCES): Added xauth.c. * configure.in: Check for X, libXau and XauGetAuthByAddr. * src/client_x11.c (client_x11_channel): New fields auth_length and name_length, for recording the decoded lengths in the setup message. (X11_SETUP_MAX_LENGTH): Defined as 48, which is the size of a message with a 16 octet cookie. Updated description of the X11 connection setup message. (LE_READ_UINT16, LE_WRITE_UINT16): New macros. (do_client_channel_x11_receive): Bug fixes, seems to work now. * src/suspend.h: Declare suspend_callback as extern. Noticed by Jean-Pierre. 2001-09-03 Niels Möller * src/client_x11.c: Added comment about observed X11 packets (that seem contrary to the documentation in RFC 1013. (do_client_channel_x11_receive): Print received cookie, for debugging purposes. (make_forward_x11): Print generated fake cookie, for debugging purposes. (parse_display): Fixed ssh_format invocation creating the local socket name. (do_channel_open_x11): Fixed invocation of verbose(). (do_format_request_x11_forward): Get the connection from the channel, now that the connection pointer is available there. (do_format_request_x11_forward): Hex encode the cookie. That's ugly, but needed for compatibility. * src/client_pty.c: Dropped lsh:-prefix on messages, it's added automatically in werror.c. * src/client.c (client_maybe_x11): Write a message if DISPLAY not set or it's value doesn't make sense. 2001-09-02 Niels Möller * src/client.c (make_client_session): Added escape sequences q, v and d, for controlling the verbosity flags. (client_argp_parser): Look at used_x11 after setting up the shell session. * src/lshg.c (make_options): Pass NULL random to init_client_options. * src/client_x11.c (make_client_x11_display): Free the fake cookie if we fail. (make_forward_x11): Make up a random cookie. * src/client.c (init_client_options): New argument RANDOM. (client_maybe_x11): Pass on RANDOM to make_forward_x11. * src/client.h (client_options): Moved RANDOM attribute here, from lsh_options. 2001-09-01 Niels Möller * src/client.c: Moved -x option to lsh.c. * src/channel.c (register_channel): Deleted connection argument. * src/channel.h (ssh_channel): Replaced the write pointer with a pointer to the connection. (channel_request): Deleted connection argument. * src/channel.h (CHANNEL_REQUEST): Likewise. * src/resource.c (init_resource): Renamed from resource_init, for consistency. Updated all callers. * src/lsh.h (struct client_x11_display): Forward declare. * src/client_x11.h: Deleted, prototypes moved to client.h. * src/client.h (client_options): New attributes with_x11 and used_x11. * src/client.c (client_maybe_pty): New function. (client_maybe_x11): New function. (client_shell_session): Use client_maybe_pty and client_maybe_x11. (client_command_session): Use client_maybe_x11. (client_argp_parser): --x11-forward should be a modifier option, not an action. * src/channel.h (channel_table): Added attribute x11_display. * src/Makefile.am.in (liblsh_a_SOURCES): Added client_x11.c. 2001-08-31 Niels Möller * src/client.c (client_argp_parser): Implemented -X flag. 2001-08-30 Niels Möller * src/xauth.c: New file. * src/client_x11.c: Work in progress. (client_x11_auth_info): New class. * src/channel_forward.c (init_channel_forward): New function, extracted from make_channel_forward. 2001-08-30 Niels Möller * configure.in: Bumped version to 1.3.4. 2001-08-29 Niels Möller * Released lsh-1.3.3. 2001-08-29 Niels Möller * src/sftp/testsuite: Fixed scripts to work outside of $srcdir. * src/sftp/buffer.c, src/sftp/client.c: Include string.h. * src/algorithms.c (all_symmetric_algorithms): Use aes256-cbc as an alias for rijndael. (lookup_crypto): Recognize aes256-cbc, aes-cbc and aes. 2001-08-23 Niels Möller * src/connection.c (do_exc_connection_handler): Display exception message. Suggested by Jonas Bofjäll. XXX: Fix in 1.2 branch. 2001-08-28 Niels Möller * src/sftp/testsuite/run-tests: Use srcdir when starting scripts. * src/Makefile.am.in (liblsh_a_SOURCES): Added channel_forward.c. * src/channel_forward.h: Renamed the tcpip_channel to channel_forward, and moved it to a separate file. It's not really tcpip-forwarding specific, and can be reused for x11-forwarding. * src/lsh_types.h (READ_UINT16): Fixed shift count. XXX: Fix in 1.2 branch. * src/parse.c (parse_uint16): New function. (parse_string16): New function. 2001-08-27 Niels Möller * src/sftp/testsuite/Makefile.am (EXTRA_DIST): Use EXTRA_DIST, not DISTFILES. cd to $srcdir when running the tests. * src/sftp/Makefile.am (EXTRA_DIST): Include header files in the dist. * buffer.c, buffer.h, client.c, client.h: Added copyright notices. * src/sftp/testsuite/Makefile.am: New file. * src/sftp/sftp-server.c (struct sftp_file): New struct with fd and position. (enum struct sftp_handle_type): Renamed constants to HANDLE_TYPE_FILE and HANDLE_TYPE_DIRECTORY. (handle_t): Deleted typedef. (HANDLE_FILE): New macro replacing HANDLE_FD. (sftp_read): New function. Keep track of position, and use seek/pread only when appropriate. (sftp_write): Likewise. * src/sftp/configure.in (AC_OUTPUT): Generate testsuite/Makefile. * src/sftp/client.c: Minor fixes; deleted unused variables, static declared functions. * src/sftp/Makefile.am (SUBDIRS): Added testsuite. * src/Makefile.am.in (SUBDIRS): Added sftp. * misc/bootstrap.sh: Bootstrap the src/sftp subdirectory. * configure.in: Configure the src/sftp subdirectory. 2001-08-26 Niels Möller * src/testsuite/export-1-test: Don't use $srcdir for finding lsh-export-key. * src/zlib.c (do_zlib): Don't print any message if Z_BUF_ERROR happens with avail_in = 0. * src/lshd.c (main_options): New experimental option --subsystems. (parse_subsystem_list): New function. (main_argp_parser): Handle --subsystems. (main): Install a subsystems handler, if appropriate. * src/server_session.c (shell_request): Deleted unused reaper attribute. (lookup_subsystem): New function. (do_spawn_subsystem): New function. (make_subsystem_handler): New function. 2001-08-21 Niels Möller * src/client_userauth.c (make_client_publickey_auth): Initialize TYPE attribute properly. * src/server_userauth.c (server_userauth_none): New authentication method. * src/lshd.c (main_argp_parser): Install a handler for the "none" authentication method. (main): Always require user authentication (used to allow clients to start the ssh-connection service directly, under the same restrictions as for "none" authentication). * src/lsh.c (main_options): Deleted options --userauth and --no-userauth. (lsh_login_command): Try the "none" authentication method. * src/handshake.c (handshake_command): Use CAST_SUBTYPE. * src/connection_commands.c (connection_if_srp): Deleted command. * src/command.c (do_command_4): Use CAST_SUBTYPE, in case command_4 is inherited. (do_command_3): Use CAST_SUBTYPE, in case command_3 is inherited. (do_command_2): Use CAST_SUBTYPE, command_2 is inherited by sexp_print_command. * src/client_userauth.c (format_userauth_none): New function. (make_client_none_auth): New function. 2001-08-12 Niels Möller * src/client.c (do_exit): New callback function. (make_client_session): Bind the sequence . to exit. (client_options): New action option -B, --background. (background_process): New command. (client_argp_parser): Implement -B. * src/lshg.c (main_argp_parser): Check that make_gateway_address doesn't return NULL. XXX: Fix in 1.2 branch. (options2info): Use self->gateway. XXX: Fix in 1.2 branch. 2001-07-30 Niels Möller * src/testsuite/export-1-test: Fixed invocation of compare_output. 2001-07-06 Niels Möller * src/io_commands.c (io_write_file_command): Bugfix. * src/command.h (command_simple): Deleted class. (STATIC_COMMAND_SIMPLE): Deleted macro. (DEFINE_COMMAND_SIMPLE): Deleted macro. (catch_command): Inherit command, not command_simple. * src/command.c (do_call_simple_command): Deleted. (catch_collect_body): Inherit command, not command_simple. * src/sexp_commands.h (sexp_print_command): Inherit command_2. * src/lsh_proxy.c (proxy_destination): Use DEFINE_COMMAND2. * src/lsh-writekey.c: Don't use DEFINE_COMMAND_SIMPLE. * src/lsh.c: Likewise. * src/lshd.c: Likewise. * src/lshg.c: Likewise. * src/proxy.c: Likewise. * src/spki_commands.c: Likewise. * src/keyexchange.c (kexinit_filter): Redefined using DEFINE_COMMAND2. * src/io_commands.c (io_write_file_command): Use DEFINE_COMMAND. (connect_local_command): Likewise. (io_log_peer_command): Likewise. * src/gateway_commands.c (gateway_setup_command): Use DEFINE_COMMAND. (gateway_accept): Use DEFINE_COMMAND2. * src/lsh-writekey.c: Don't use command_simple. * src/connection_commands.c (connection_remember): Redefined using DEFINE_COMMAND2. * src/channel.c (connection_service_command): Use DEFINE_COMMAND, not DEFINE_COMMAND_SIMPLE. * src/client.c (client_options2remote): Likewise. (client_options2actions) Likewise. 2001-07-05 Niels Möller * src/testsuite/Makefile.am (TS_SH): Added export-1-test. * src/lsh-export-key.c (ssh2_print_command): Inherit command_2. Don't use command_simple. 2001-07-04 Niels Möller * src/command.c (collect_state_1): Deleted class. (collect_state_1): Deleted class. (collect_state_2): Deleted class. (collect_state_3): Deleted class. (make_collect_state_1): Deleted function. (make_collect_state_2): Deleted function. * src/command.h (command_2): Made invoke a method, not a function pointer. Updated users. (COMMAND_2_INVOKE): New macro. (collect_info_3): Deleted class. (collect_info_2): Deleted class. (collect_info_1): Deleted class. (STATIC_COLLECT_1): Deleted macro. (STATIC_COLLECT_2): Deleted macro. (STATIC_COLLECT_2_FINAL): Deleted macro. (STATIC_COLLECT_3_FINAL): Deleted macro. * src/channel_commands.h (install_info): Inherit command_2, instead of collect_info_2. * src/testsuite/functions.sh (spawn_lshd): Pass --no-syslog to lshd, not --log-file. * src/tcpforward_commands.c (open_forwarded_tcpip): Redefined using DEFINE_COMMAND2. (open_direct_tcpip): Likewise. (remote_listen_command): Likewise. (make_request_tcpip_forward_command): Deleted function. Moved code to remote_listen_command. (make_direct_tcpip_handler): Redefined using DEFINE_COMMAND. (make_tcpip_forward_handler): Likewise. * src/sexp_commands.c (sexp_print_raw_hash): Redefined using DEFINE_COMMAND3. * src/proxy.c (chain_connections): Redefined using DEFINE_COMMAND3. * src/command.c (do_trace_continuation): Use trace(... %t ...). * src/werror.c (logfile_flag): Deleted global variable. (werror_vformat): Added %t, for printing the object type. * src/lshd.c: New option --no-syslog. * src/io_commands.c (listen_with_callback): Redefined using DEFINE_COMMAND3. * src/handshake.c (handshake_command): Redefined using DEFINE_COMMAND4. * src/connection_commands.c (connection_if_srp): Redefined using DEFINE_COMMAND3. (make_connection_if_srp): Use make_command_3_invoke_2. * src/combinators.c (command_Cp): Bugfix, changed argument order. 2001-07-03 Niels Möller * src/testsuite/runtests (srcdir): By default, use `pwd`, not ".". * src/testsuite/functions.sh: Don't set srcdir here. (spawn_lshd): Send messages to lshd.log. * src/werror.c (logfile_flag): New global variable. (syslog_flag): Deleted. (werror_argp_parser): Set logfile_flag of a log file option is encountered. * src/lshd.c (main): Don't use syslog if the user provided an explicit log-file option. * src/combinators.c (command_C): Redefined using DEFINE_COMMAND3. (command_Cp): Redefined using DEFINE_COMMAND4, but disabled the new version as it doesn't quite work. * src/testsuite/macros.m4: Include string.h. * src/combinators.c (command_Sp): Redefined using DEFINE_COMMAND4. (command_B): Redefined using DEFINE_COMMAND3. (command_Bp): Redefined using DEFINE_COMMAND4. * src/command.c (command_4_invoke_3): New class. (make_command_4_invoke_3): New function. (command_4_invoke_2): New class. (make_command_4_invoke_2): New function. (command_4_invoke): New class. (make_command_4_invoke): New function. * src/command.h (command_4): New class. (DEFINE_COMMAND4): New macro. * src/gateway_commands.c: Include string.h. * configure.in: Bumped version to 1.3.3. 2001-07-02 Niels Möller * src/combinators.c (command_I): Redefined using DEFINE_COMMAND. Updated users as the type was changed in the process. (command_K): Redefined using DEFINE_COMMAND2. (command_S): Redefined using DEFINE_COMMAND3. * src/command.c: New class. (make_command_2_invoke): New function. (command_3_invoke_2): New class. (make_command_3_invoke_2): New function. (command_3_invoke): New class. (make_command_3_invoke): New function. (progn_command): Use DEFINE_COMMAND isntead of DEFINE_COMMAND_SIMPLE. * src/command.h: Started replacing command_simple and the collect_info_n classes with simpler schemes. (command_2): New class. (DEFINE_COMMAND2): New macro. (command_3): New class. (DEFINE_COMMAND3): New macro. * src/connection_commands.c (connection_require_userauth): Changed invocation of DEFINE_COMMAND. * src/gateway_commands.c (gateway_init): Likewise. * src/command.h (DEFINE_COMMAND): Changed macro to not take the function arguments as arguments. * src/command.c (gaba_apply): Rewrote to not use COMMAND_SIMPLE_CALL. (do_command_unimplemented): Deleted function. 2001-06-27 Niels Möller * acinclude.m4: Added template for socklen_t definition. * acconfig.h: Deleted definitions, use AH_TEMPLATE in configure.in instead. Can this file be removed completely now? * configure.in: Added AH_TEMPLATE calls. Deleted test for offsetof. * src/client_escape.c (newlinep): New function. Treat NL and CR equivalently. (scan_escape): Simplified. Also doesn't use memchr anymore. * src/io.c (io_listen_local): Use plain offsetof. (io_connect_local): Likewise. * src/lsh_types.h (OFFSET_OF): Deleted definition, simply trust stddef.h. * src/server_userauth.c (do_exc_userauth_handler): Let the connection's exception handler deal with EXC_PROTOCOL (fixed somewhat differently in the 1.2.x branch). 2001-06-26 Niels Möller * configure.in: Deleted IDEA support. * src/process_atoms (atom2define): Changed invocation of tr to be compatible with the Solaris 8 tr. 2001-06-26 Niels Möller * src/client_escape.c (NEWLINE): New macro. (do_escape_handler): Reset state to GOT_NONE appropriately. * src/client.c (client_argp_parser): Added empty statement after label. (make_client_session): Bind ^Z to suspend. 2001-06-24 Niels Möller * src/xalloc.h (CHECK_TYPE) [DEBUG_ALLOC]: Added parentheses. * src/xalloc.h (CHECK_SUBTYPE) [DEBUG_ALLOC]: Likewise. * src/werror.c (werror_vformat): Implemented the 'p' (paranoia) modifier for %c. * src/client_escape.c (escape_dispatch): Use %pc with werror. * src/client.c (make_client_session): Check if stdin is a tty, when deciding on the default for escape char handling. 2001-06-20 Niels Möller * src/client_escape.c (do_escape_handler): Fixed the EOF case. 2001-06-19 Niels Möller * src/client_session.c (client_read_stdin): New function, for installing the escape-char handler on stdin. (do_client_io): Use client_read_stdin. (make_client_session_channel): Added argument escape. * src/client_escape.c: Moved suspend-related code to suspend.c. * src/client.c (client_escape_info): New function. (client_options): New option ---escape-char or 'e'. (make_client_session): Seet up escape char info. (client_argp_parser): Handle escape-char option. Call suspend_install_handler. * src/Makefile.am.in (liblsh_a_SOURCES): Added suspend.c. * src/unix_interact.c: Moved suspend-related code to suspend.c. * src/suspend.c, src/suspend.h: New files. * configure.in: Bumped version to 1.3.2. 2001-06-17 Niels Möller * src/rsync/rsync.h: Include , not . * src/channel.c (alloc_channel): Initialize new channel-entries to NULL. * src/cast.c: Adapted to nettle. * Makefile.am.in (DOTDISTS): Deleted references to the symmetric subdirectory. (MAKEFILESAM): Likewise. * configure.in (AC_CONFIG_FILES): Likewise. * doc/HACKING (ROAD MAP): Updated to mention nettle. * doc/lsh.texinfo: Added @dircategory and @direntry. * src/twofish.c: Adapted to nettle. 2001-06-15 Niels Möller * src/blowfish.c: nettle updates. * src/serpent.c: Likewise. * configure.in: Configure in the src/nettle sub directory. * misc/bootstrap.sh: Invoke the nettle .bootstrap script. 2001-06-13 Niels Möller * misc/bootstrap.sh: Bootstrap the nettle subdirectory. * src/rsync/: Updated to libnettle conventions. * configure.in (CPPFLAGS): Add -LSH and -I$srcdir/src, needed by src/rsync/. 2001-06-12 Niels Möller * src/dsa.c, src/dsa_keygen.c, src/md5.c, src/rijndael.c, src/sha.c: Adapted to the nettle API. * configure.in: Use src/nettle instead of src/symmetric. * src/Makefile.am.in: Likewise. * src/testsuite/Makefile.am: Likewise. 2001-06-09 Niels Möller * src/io.c (do_consuming_read): In the EOF case, call close_fd_read after A_WRITE. 2001-06-07 Niels Möller * src/io.c (do_kill_io_backend): Let close_fd do it's work. 2001-06-06 Niels Möller * src/io.c (close_fd): Really close the fd, and invoke any close callback. (io_iter): Simplified handling of closed files. Simply unlink them, close_fd has to do the rest of the work. 2001-05-29 Niels Möller * acinclude.m4: AC_CHECK_MEMBER: Deleted definition (a similar macro is included in autoconf-2.50). AC_CHECK_VAR: Deleted. (AC_CHECK_KRB_LIB): Don't use changequote. * configure.in: Set SRP_PROGRAM. Require autoconf-2.50. Use the new AC_CHECK_MEMBERS macro. * src/unix_user.c: Update for autoconf-2.50, changed HAVE_UT_NAME to HAVE_STRUCT_UTMP_NAME, and similarly for other defines. 2001-05-23 Niels Möller * configure.in: Some cleanup, and update for autoconf-2.50. Some more work needed. 2001-05-17 Niels Möller * configure.in: Set SRP_PROGRAM. * src/Makefile.am.in (EXTRA_PROGRAMS): Added srp-gen. (bin_PROGRAMS): Use SRP_PROGRAM, don't compile srp-gen if SRP-support is disabled. * src/testsuite/write-key-2-test: Fixed test; check for output files in the testhome directory. * src/unix_user.c: Fixed dummy definition of struct utmp (spotted by Tomi Ollila). 2001-05-16 Niels Möller * configure.in: Bumped version to 1.3.1. * Released 1.3.0. 2001-05-15 Niels Möller * src/scm/gaba.scm: Some more cleanup. * src/lshd.c (do_exc_lshd_handler): Handle EXC_RESOLVE. * src/testsuite/functions.sh (spawn_lshd): Use 127.0.0.1 instead of localhost. * src/scm/gaba.scm (append-deep): Deleted. (type->category): Deleted. (type->declaration): Deleted. (type->mark): Deleted. (type->free): Deleted. (fix-method): Deleted. (do-instance-struct): Deleted. (do-struct): Deleted. (do-mark-function): Deleted. (do-free-function): Deleted. (do-struct-mark-function): Deleted. (do-struct-free-function): Deleted. (do-class): Deleted. 2001-05-15 Niels Möller * src/scm/gaba.scm: Rewrote the functions for generating C code. 2001-05-15 Niels Möller * configure.in: Updated version number to 1.3.0. 2001-05-14 Niels Möller * src/gc.c (gc) [!DEBUG_ALLOC]: Don't use number_of_strings. 2001-05-11 Niels Möller * src/testsuite/functions.sh (PIDFILE): New variable, with absolute path to the pid-file. FIXED in 1.2 branch. (spawn_lshd): $PIDFILE. FIXED in 1.2 branch. 2001-05-03 Niels Möller * src/lshd.c (main): Start the background randomness poll *after* forking into the background. FIXED in 1.2 branch. * src/testsuite/functions.sh (spawn_lshd): Use --daemon flag. 2001-05-02 Niels Möller * sexp_streamed_parser.c: Deleted file. * src/unix_user.c (format_env_pair): Return const char *. (format_env_pair_c): Likewise. (do_exec_shell): Use const char ** for argv and envp. * src/xalloc.c (lsh_free): Cast to void * before calling free, as free doesn't accept const void *. (lsh_string_free): Changed argument type to const struct lsh_string *. (lsh_space_free): Bug-fix. (lsh_space_alloc): Use lsh_malloc, not xalloc directly. (lsh_space_free): Changed argument type to const void *. * src/userauth.h (lsh_user): Use const char ** for argv. 2001-05-01 Niels Möller * src/unix_interact.c (unix_read_password): Use const prompt string. (unix_yes_or_no): Likewise. * src/srp_exchange.c (make_srp_entry): Use const struct lsh_string for the salt. * src/spki_commands.c (do_spki_decrypt): Use const struct lsh_string. * src/spki.c (subject_match_hash): Use const struct lsh_string. (do_spki_tag_prefix_match): Likewise. (spki_subject_by_hash): Likewise. (do_spki_lookup): Likewise. * src/sexp_parser.c (skip_space): New function, skipping whitespace and comments. (sexp_parse_transport): Allow whitespace and comments. * src/sexp_commands.c: Don't use the streamed sexp parser. (sexp_parser): New class. (do_sexp_parse_once): New function. (do_sexp_parse_many): New function. (do_read_sexp_continue): Deleted function. (make_read_sexp_continuation): Deleted function. (read_sexp_exception_handler): Deleted class. (do_read_sexp_exception_handler): Deleted function. (make_read_sexp_exception_handler): Deleted function. (make_sexp_parser): New function. (make_read_sexp_command): New argument MAX_SIZE. * src/sexp.c: Constification, use const struct lsh_string for all sexp-related strings. 2001-04-26 Niels Möller * src/scm/gaba.scm: Added const type modifier. * src/sexp-conv.c (MAX_SEXP_SIZE): New constant, used with make_read_sexp_command. * src/server_session.c (do_spawn_exec): Use const char * for argv entries. * src/server_keyexchange.c (MAX_SRP_SIZE): New constant, used with make_read_sexp_command. * src/lsh-writekey.c (MAX_SEXP_SIZE): New constant. Used with STATIC_READ_SEXP. * src/lsh-export-key.c (MAX_KEY_SIZE): New constant. Use with make_read_sexp_command. * src/io.c (do_buffered_read): Call close_fd_read on error. This way, the user doensn't have to use an exception handler just for closing the file. * src/interact.h (interact): Use const for prompt arguments. * src/format.c (lsh_get_cstring): Use const for input and output. * src/pkcs5.c (pkcs5_derive_key): Declare password and salt input as const. * src/abstract_crypto.c (crypt_string): Declare the input string const. Nevertheless, reuse it for output in case FREE is true. (crypt_string_pad): Declare input string const. (crypt_string_unpad): Likewise. * src/Makefile.am.in (liblsh_a_SOURCES): Deleted sexp_streamed_parser.c. 2001-04-25 Niels Möller * src/keyexchange.c (do_handle_newkeys): Added verbose message when receiving NEWKEYS. (do_handle_kexinit): Added verbose message when receiving KEXINIT message. * src/parse.c (parse_next_atom): Tolerate empty atoms, for compatibility with "SSH-1.99-2.0.13 (non-commercial)". XXX Fix in 1.2 branch? 2001-04-17 Niels Möller * src/testsuite/Makefile.am (TS_MORE_SH): Added tests lshg-cat-test, lshg-cat-2-test and ssh1-fallback-test. * src/testsuite/functions.sh: Renamed SERVERFLAGS to LSHD_FLAGS, CLIENTFLAGS to LSH_FLAGS, and added LSHG_FLAGS. * src/testsuite/lshg-cat-2-test: New test. * src/testsuite/lshg-cat-test: Sleep some, waiting for lsh to connect. * src/sftp/.bootstrap: Don't run ./configure. * src/werror.c (werror_argp_parser): Initialize program_name at ARGP_KEY_INIT time. * src/resource.c (dont_free_live_resource): Be more quiet during gc_final. * src/lshg.c (do_exc_lshg_handler): Fixed werror format string. Fixed in 1.2 branch. * src/lsh.c (do_lsh_lookup): If the user decides to trust the key, add it to the spki_context. * src/lcp: Replaced the bashism "==" with "=". * src/gc.c (gc_final_p): New variable, non-zero during gc_final(). * src/client_session.c (make_client_session_channel): Register stdio files as resources. 2001-04-12 Niels Möller * src/lshd.c (main_argp_parser): Bugfix: Use the supplied interface! Fixed in 1.2 branch. * src/testsuite/ssh1-fallback-test: New test. * src/testsuite/lshg-cat-test: New test. * src/testsuite/fake-sshd1: New file. * src/testsuite/functions.sh (spawn_lshd): Pass arguments to lshd. Fixed in 1.2 branch. (exec_lshg): New function. * src/ssh1_fallback.c (fall_back_to_ssh1): Reset the fd to blocking mode. Fixed in 1.2 branch. * src/io.c (io_set_blocking): New function. Added in 1.2 branch. (do_exc_finish_read_handler): Close fd immediately on EXC_FINISH_IO. Fixed in 1.2 branch. 2001-04-11 Niels Möller * src/userauth.h (lsh_process): New class. (lsh_user): The fork_method now returns the child as an lsh_process. * src/unix_user.c (process_resource): Inherit lsh_process. (do_signal_process): New function. * src/unix_interact.c (install_suspend_handler): New function. (stop_handler): New signal handler for TSTP, that sets and resets the tty modes. * src/tty.c (tty_getwinsize): Take a struct terminal_dimensions * as argument. (tty_setwinsize): Likewise. * src/server_session.c (server_session): Changed type of process attribute to lsh_process. Updated uses. (do_alloc_pty): Check request syntax in all cases, even if there's no pty. (do_window_change_request): New function. * src/interact.h (struct terminal_dimensions): Moved definition... * src/tty.h (struct terminal_dimensions): ...to here. * src/client_pty.c: Include tty.h. * src/client.h (escape_info): New class. * src/Makefile.am.in (liblsh_a_SOURCES): Added client_escape.c. * src/client_escape.c: New file. 2001-04-10 Niels Möller * src/client.c (make_client_session): Use set_error_nonblocking. 2001-04-09 Niels Möller * src/werror.c (set_error_nonblocking): New function. (set_error_stream): Deleted WITH_POLL argument. (werror_options): Aded option --log-file. (werror_argp_parser): Process --log-file option. * ANNOUNCE: Changed "COPYRIGHT" to "LICENSE", by rms' request. Fixed in 1.2 branch. 2001-04-08 Niels Möller * src/lsh.c (main_argp_parser): Deleted old -L handling (moved to client.c). * src/sexp_commands.c (do_print_raw_hash_simple): Deleted unused function. * src/sexp.c (sexp_sn): Deleted unused function. * src/io.c (make_listen_callback_no_peer): Deleted unused function. * src/gc.c (gc): Display number of strings. * src/client_session.c (do_client_session_eof): Deleted old code that closed stdin here. * src/client.c (do_exit_status): Deleted old code sending CHANNEL_EOF here. (do_exit_signal): Likewise. (do_exit_signal): Signals in the exit-signal message are no longer encoded as integers. XXX Fix in 1.2 branch? * src/channel.c (do_exc_finish_channel_handler): Deleted old (#if:ed out) code for raising EXC_FINISH_READ. (channel_close_handler): Deleted old code calling the channel's EOF handler here. * src/lsh.c (main): Call io_final. * src/io.h (lsh_fd): Added label attribute. * src/io.c (kill_fd): Deleted. (io_backend): Inherit resource. (do_kill_io_backend): New function. (make_io_backend): Call resource_init. (io_final): New function. (init_file): New argument LABEL. (make_lsh_fd): New rgument LABEL. Updated callers. (close_fd): Display label. (io_iter): Display label. * src/lsh-writekey.c (make_writekey): Deleted unneeded global definitions. * src/resource.c (dont_free_live_resource): Changed again, to issue a fatal error. * src/sexp_parser.h: Deleted unused file. * src/testsuite/Makefile.am (TS_PROGS): Added string-test. * src/testsuite/macros.m4 (TS_CHECK): New macro. * src/testsuite/string-test.m4: New tests for string related functions, currently only lsh_get_cstring. * src/format.c (ssh_cformat): Deleted. Replaced all uses with ssh_format. (make_cstring_l): Deleted. (make_cstring): Deleted. (lsh_get_cstring): New function. * src/werror.c (write_syslog): Don't use make_cstring_l. * src/unix_user.c (do_verify_password): Use lsh_get_cstring. (do_read_file): Likewise. (do_read_file): Likewise. (format_env_pair): Likewise. (do_exec_shell): Likewise. (make_unix_user): Likewise. (do_lookup_user): Likewise. * src/unix_interact.c (unix_read_password): Use lsh_get_cstring. * src/server_session.c (do_spawn_exec): Use lsh_get_cstring. * src/lsh.h (NUL_TERMINATED): Deleted. * src/format.h (format_cstring, make_string): Renamed function. And made it a macro. Updated callers. * src/adns.c (do_resolve): Use lsh_get_cstring. Don't use NUL_TERMINATED. * src/io.c (address_info2sockaddr): Likewise. (make_local_info): Likewise. (io_listen_local): Likewise. (io_connect_local): Likewise. 2001-04-05 Niels Möller * src/testsuite/functions.sh (run_lsh): Quote the command better. * src/xalloc.c (lsh_string_alloc): Fixes, now compiles both with and without DEBUG_ALLOC. * src/werror.c (werror_argp_parser): Added missing break. (werror): Handle the case where both verbose_flag and quiet_flag are set. * src/io.c (do_consuming_read): Free the string properly on EOF or error. XXX Fix in 1.2 branch? * src/client_userauth.c (make_client_userauth): Convert username to utf8 once, here. Updated callers. Previously, the converted strings leaked. * src/client_session.c (do_client_session_eof): Use close_fd_nicely. Otherwise we lose data. FIXED in 1.2 branch. * src/Makefile.am.in (atoms_gperf.c): Massage gperf output to reduce the number of compilation warnings. 2001-04-05 Niels Möller * src/gc.c (gc_final): Check for leaked strings, and write any clues. * src/lsh.h (struct lsh_string_header): Added more debug info. * src/xalloc.c (all_strings): New variable, for debugging. (sanity_check_string_list): New function. (lsh_string_alloc_clue): New function, remembering allocated strings. (lsh_string_free): Unregister string. * src/werror.c (werror_vformat): Pass arguments to werror_write in the correct order. (werror_vformat): Likewise. 2001-04-04 Niels Möller * src/testsuite/Makefile.am (CFLAGS): Reintroduced -O0, to make compilation faster. * src/client.c, src/client_keyexchange.c, src/client_userauth.c, src/debug.c, src/disconnect.c, src/proxy.c, src/proxy_x11forward.c, src/server.c, src/server_keyexchange.c, src/server_userauth.c: Packet handlers should no longer free packets. * src/xalloc.c (number_of_strings): Define only if DEBUG_ALLOC. (lsh_string_alloc): NUL-terminate strings, for simplicity. (lsh_string_free): Check that string is still NUL-terminated. * src/werror.c (program_name): New variable. (werror_argp_parser): Initialize program_name. (werror_vformat): Prefix messages with program_name. (werror_vformat): Simplified code in 'z' case. * src/proxy_userauth.c (do_forward_success): dup packet before forwarding it. Packet handlers should no longer free packets. * src/channel.c (RETURN, END): Deleted macros. Packet handlers should no longer free packets. * src/keyexchange.c (do_handle_kexinit): dup packet when storing it in the connection struct. (do_handle_newkeys): Packet handlers should no longer free packets. * src/write_buffer.c (make_write_buffer): Renamed write_buffer_alloc to make_write_buffer. Updated callers. * src/gc.c (gc_final): Check number_of_objects and number_of_strings. * src/connection.c (connection_handle_packet): Always free the packet here. Packet handlers no longer needs to do that. (connection_handle_packet): Accept SSH_MSG_IGNORE and SSH_MSG_DEBUG in the KEX_STATE_NEWKEYS state. * configure.in: Bumped version to 1.3. * lsh-1.2 released. * distribution-key.gpg: Updated key, more signatures and later expiration date. * src/sftp/Makefile.am (sftp_test_client_SOURCES): Added werror.c and client.c * src/sftp/sftp-test-client.c (struct client_ctx): Moved to client.h (werror_program_name): Defined here. * src/sftp/client.c, src/sftp/client.h, src/sftp/werror.c, src/sftp/werror.h: New files. 2001-04-03 Niels Möller * src/sftp/testsuite/put-1-test: Check that the new file exists. Use $TESTHOME for referring to the local file. * src/sftp/sftp-test-client.c (do_put): Fixes and simplifications. 2001-04-03 Niels Möller * src/sftp/sftp-test-client.c (do_open): New function. (do_close): New function. (do_get): Use do_open and do_close. 2001-04-02 Niels Möller * configure.in: Bumped version to 1.2. * src/Makefile.am.in (EXTRA_DIST): Added lcp. * src/Makefile.am.in (noinst_SCRIPTS): Added the experimental lcp script. 2001-04-02 Niels Möller * src/sftp/sftp-server.c (sftp_process_read): Fixed size passed to pread. (debug): Added a prototype saying that it takes printf-style arguments. 2001-04-02 Niels Möller * src/sftp/sftp-server.c (sftp_process_realpath): Fixed invocation of pathconf(). Include stdarg.h. * src/sftp/testsuite: Adapted shell scripts to /bin/sh. Removed uses of the "function" keyword, and use a full path when sourcing common.sh. * src/sftp/testsuite/run-tests: Use /bin/bash, as we use bash-specific parameter expansion. 2001-04-01 Niels Möller * src/sftp/Makefile.am (sftp_server_SOURCES, sftp_test_client_SOURCES): Added xmalloc.c. * src/sftp/xmalloc.c: New file. Defines xmalloc, xrealloc and xstrdup. * src/sftp/sftp-test-client.c (do_put): Use xmalloc. * src/sftp/sftp-server.c (sftp_get_user): New function. (sftp_get_group): Likewise. (struct sftp_ctx): Added user_cache and group_cache. (sftp_init): Initialize user_cache and group_cache. (sftp_put_longname): Take a sftp_ctx * as argument. Use sftp_get_user and sftp_get_group. * src/sftp/buffer.c: Use xmalloc and xrealloc. * src/sftp/idcache.c: Rewrite. * src/sftp/Makefile.am (sftp_server_SOURCES): Added idcache.c. * src/sftp/sftp-server.c: Use the functions from idcache.c. * src/sftp/idcache.c: #include idcache.h. #if:ed out prototypes and functions that aren't needed. Use malloc instead of xmalloc. * src/sftp/idcache.h: New file. * src/sftp/testsuite/setup-env: Clean up first. * src/sftp/testsuite/get-1-test: New testcase. * src/sftp/testsuite/ls-1-test: Likewise. * src/sftp/testsuite/ls-2-test: Likewise * src/sftp/testsuite/common.sh (PROGRAMDIR): New variable, holding an absolute path to the directory where the programs are. * src/sftp/sftp-test-client.c (sftp_client_get_id): New function. (do_ls): Fixes and some simplification. (do_get): Simplified. The old more featureful implementation left #if:ed out. * src/sftp/sftp-server.c (debug): New function. (sftp_get_name): New function. (struct sftp_dir): New struct. (sftp_lstat_in_dir): New function. (sftp_process_readdir): Handle directories that are not our current working directory. (parse_options): New function, currently only handling -d. * src/sftp/buffer.c (sftp_check_input): Don't modify i->left here. (sftp_get_data): ...but do it here instead. (sftp_free_string): Reintroduced this function. (sftp_get_string): This function now requires the user to deallocate the string. (sftp_get_string_auto): Simpler function, that deallocates strings automatically. (sftp_read_packet): Return failure (0), rather than crashing, if there is data leftover from the previous packet. (sftp_put_final_length): Calculate the length correctly. (sftp_put_reset): Fixed assertion. (sftp_put_attrib): Likewise. * src/sftp/Makefile.am (noinst_PROGRAMS): Added dump-hex. * src/sftp/sftp.h: Converted from #define:s to enums. * src/sftp/dump-hex.c: New program that copies data from stdin to stdout, and writes a hex dump to stderr in the process. * src/sftp/debug-server: New script to dump communication between sftp-server and sftp-test-client. * src/sftp/configure.in: Added to cvs. 2001-03-31 Niels Möller * src/sftp/acconfig.h: Added HAVE_GCC_ATTRIBUTE. * src/sftp/.bootstrap: New file. 2001-03-30 Niels Möller * src/sftp/sftp-test-client.c (do_ls): Print the long name. * src/sftp/sftp-server.c (sftp_get_name): New function. (HANDLE_TYPE, HANDLE_DIR, HANDLE_FD): New macros. Fixed handles. Simplified, deleting all sftp_free_string calls. Use pread and pwrite, where available. * src/sftp/buffer.c (struct sftp_input): Added array of strings, so that callers don't have to free them explicitly. (sftp_put_reset): New funtion. (sftp_get_uint64): Use off_t, conditionalized on its size. (sftp_put_uint64): Likewise. * src/sftp/Makefile.am: Use AUTOMAKE_OPTIONS = foreign, added sftp-test-client. 2001-03-28 Niels Möller * src/lcp (split spec): New function for splitting arguments. Checked in first working version. 2001-03-27 Niels Möller * doc/srp-spec.nroff: Bumped version number, updated dates, and added a section Further questions. 2001-03-26 Niels Möller * Released lsh-1.1.9. * misc/Makefile.am.in (EXTRA_DIST): Added more files to the dist: libgcc2.c-patch, bootstrap.sh and make-dist. * configure.in: By default, disable debug-alloc and debug-trace. * src/testsuite/keygen-2-test: Use a smaller key size, 777 bits, for speed. * src/testsuite/keygen-1-test: Use NIST security level 2 (640 bits), for speed. * src/argp/configure.in: Bumped argp version to standalone-1.1. 2001-03-26 Niels Möller * src/argp/configure.in (CPPFLAGS): Added -D_GNU_SOURCE. 2001-03-25 Niels Möller * src/testsuite/functions.sh (spawn_lshd): Use kill -9 to stop lshd; otherwise lshd catching SIGTERM leads to timing problems. * Released lsh-1.1.9. * misc/libgcc2.c-patch: gcc patch. * src/crypto.c: Deleted obsolete file. * src/testsuite/Makefile.am (CFLAGS): -O0 is not needed anymore, since most of the rijndael tests were deleted. * src/proxy_userauth.c (do_proxy_userauth_continuation): Don't use FORCE_APPLY. * src/command.h (delayed_apply): Deleted class. * configure.in: Bumped version to 1.1.9. * src/testsuite/rijndael-test.m4: Deleted most tests, left 4 for each key size. * src/werror.c (fatal): If compiling with gcov, use exit(255) instead of abort. * src/spki_commands.c (parse_private_key): Use fatal instead of abort. * src/sexp.c (sexp_sn): #if:ed out. * src/resource.c (dont_free_live_resource): Call werror, not fatal. Currently, this is normal iff it happens during gc_final. * src/proxy_userauth.c (do_handle_userauth): Don't use make_delay_continuation. * src/lshg.c (main): Call gc_final. * src/lshd.c (main): Call gc_final. When compiling with gcov, catch the TERM signal and call exit() sometime later. * src/lsh.c: Call gc_final(). * src/lsh-keygen.c: Use fatal(), not abort(). * src/io_commands.c (remember_continuation): Deleted class. (do_remember_continuation): Deleted function. (make_remember_continuation): Deleted function. (do_listen): Deleted arguments resources and lookup. Updated callers. (do_simple_listen): Deleted function. (make_simple_listen): Deleted function. * src/gc.c (gc_final): New function. * src/command.c (make_delayed_apply): Deleted function. (delay_continuation): Deleted class. (do_delay_continuation): Deleted function. (make_delay_continuation): Deleted function. * src/channel.c (connection_service): Deleted class. * doc/lsh.texinfo (Invoking lsh): Added a note saying that ordering is important. * doc/TODO (TESTING): Added info on missing tests. * configure.in: Define WITH_GCOV when compiling for gcov. * acconfig.h (WITH_GCOV): New symbol. 2001-03-24 Niels Möller * src/lsh_proxy.c (main): Use listen_callback instead of simple_listen. 2001-03-22 Niels Möller * src/alist.c (alist_add): #if:ed out unused function. 2001-03-21 Niels Möller * src/client_password.c: Deleted. * src/lshd.c (install_terminate_handler): Catch SIGTERM and arrange for exit(0) to be called on termination. 2001-03-20 Niels Möller * src/lshg.c: Include client.h (used to include client.c. Argh!). * src/lsh.h: Forward-declare struct interact. * src/lsh.c: Don't include client_pty.h. * src/client_session.c: Include client.h, not client_session.h. * src/client_pty.c: Include client.h, not client_pty.h. * src/client.h (make_pty_request): Moved declaration here. * src/client.c: Don't include client_pty.h. * src/client_session.h, src/client_pty.h: Deleted. * src/Makefile.am.in (class-map): Let the shell find the awk program. 2001-03-19 Niels Möller * src/scm/gaba.scm (class-annotate): New function. * src/make-class-map: Beautified output. * src/lsh-keygen.c (main): Don't use blocking_write. * src/blocking_write.h, src/blocking_write.c: Deleted. * src/Makefile.am.in (liblsh_a_SOURCES): Removed blocking_write.c. 2001-03-16 Niels Möller * ANNOUNCE: Updated, preparing for lsh-1.2. * src/server_session.c (format_exit_signal): Represent a signal as a string, not an integer. * src/translate_signal.c: Likewise. * src/client.c (do_exit_signal): Don't use the signal name from the packet, only the message. * src/atoms.in: Added standard signals. * src/resource.c (do_remember_resource): Bugfix: Use KILL_RESOURCE, not KILL. 2001-03-15 Niels Möller * doc/srp-spec.nroff: Fixed definition of m2, pointed out by Tom Holroyd. 2001-03-14 Niels Möller * src/Makefile.am.in (class-map): Added rule for generating class-map. * src/make-class-map: New awk script for describing the class hierarchy. Almost working. 2001-03-14 Niels Möller * src/tcpforward.h (remote_port): Deleted c attribute. * src/string_buffer.c (string_buffer_length): Deleted. * src/spki_commands.h (make_spki_parse_key): Deleted. * src/spki_commands.c (spki_read_acls_command): Deleted. * src/sexp.h (sexp_iterator): Deleted set method. (SEXP_SET): Deleted. * src/sexp.c (do_nil_get): New function. (do_nil_assoc): New function. (do_nil_left): New function. (do_nil_next): New function. (make_iter_nil): New function. (do_format_nil): New function. (sexp_nil): New definition, that isn't a cons. (do_vector_set): Deleted. (sexp_iter_cons): deleted. (do_cons_get): Deleted. (do_cons_set): Deleted. (do_cons_assoc): Deleted. (do_cons_left): Deleted. (do_cons_next): Deleted. (make_iter_cons): Deleted. (do_format_sexp_tail): Deleted. (do_format_sexp_cons): Deleted. (sexp_c): Deleted. * src/server_session.h (make_server_connection_service): Deleted. * src/proxy_userauth.c (do_userauth_proxy): Don't use make_once_continuation. * src/lsh.c (do_lsh_default_handler): Don't use EXC_SERVICE. * src/keyexchange.h (make_install_new_keys: Deleted. * src/io_commands.c (collect_connect_port): Deleted. (connect_with_port): Deleted. * src/handshake.c: Adapted to change in collect_info_3. * src/gateway.c (gateway): Disabled unused class. * src/exception.c (dummy_exception): Deleted. * src/digits.c (simple_decode_base64): Deleted. * src/command.h (collect_info_4): Deleted. * src/combinators.c: Adapted to change in collect_info_3. * src/command.c (do_collect_4): Deleted. (make_collect_state_3): Deleted. (make_once_continuation): Deleted. (make_catch_report_collect_body): Deleted. (collect_state_2): Deleted attribute next. * src/client.c (make_client_options): Deleted, as it wasn't used. * src/channel_commands.h (channel_command): Deleted, it wasn't used. * src/channel.h: Deleted old code (CONNECTION_START and format_channel_open_a). * src/alist.h: Deleted ALIST_KEYS. 2001-03-13 Niels Möller * src/dsa_keygen.h, src/packet_ignore.c, src/packet_ignore.h, src/password.c, src/password.h, src/proxy_channel.h, src/session.c, src/session.h:Removed obsolete files. 2001-03-12 Niels Möller * configure.in: Bumped version to 1.1.8. * src/client_session.c (do_client_session_eof): Close stdout and stderr, not stdin. * src/client.c (do_exit_status): Don't call channel_eof. This way, the behavior is more similar to other ssh clients. * src/channel.c (channel_request_handler): Display more info about unexpected packets. (channel_close_handler): Don't display the "unexpected channel close" message if CHANNEL_NO_WAIT_FOR_EOF is set. Don't invoke the CHANNEL_EOF callback. (channel_eof): Use the new CHANNEL_NO_WAIT_FOR_EOF flag. (init_channel): Set CHANNEL_CLOSE_AT_EOF by default. (channel_read_close_callback): Improved comment. * src/channel.h (CHANNEL_NO_WAIT_FOR_EOF): New flag. * src/tcpforward.c (do_tcpip_eof): Use the SHUT_WR constant, which is defined in io.h if needed. * src/server_session.c (spawn_process): Clear CHANNEL_CLOSE_AT_EOF. (do_exit_shell): Set CHANNEL_CLOSE_AT_EOF and CHANNEL_NO_WAIT_FOR_EOF. * src/gateway_channel.c (make_gateway_channel): Clear CHANNEL_CLOSE_AT_EOF. * src/io.h (SHUTDOWN_UNIX): Moved shutdown workaround from io.c, and added a _UNIX-suffix on the macros to indicate that they are for AF_UNIX sockets only. * src/scm/gaba.scm (string-upcase): Moved definition to guile-compat.scm. scsh already provides string-upcase, and the definition here trigs a bug in string->list in scsh-0.5.2. 2001-03-12 Niels Möller * src/io.c (io_iter): Handle POLLERR. 2001-03-07 Niels Möller * doc/TODO: scsh-0.5.2 is truly free software! Removed paragraph describing the scsh situation. * README: Say that scsh-0.5.2 is needed. * src/scm/guile-compat.scm (char-set=): New function, for compatibility with scsh-0.5.2. (char-set:empty): New variable, likewise. * src/scm/make-char-classes.scm (char-set-assoc): A real function now, as I'm not sure that the usual assoc handles char-sets. (char-set-empty?): Use char-set:empty (new in scsh-0.5.2). (char-set=?): Removed function, scsh-0.5.2 provides a similar function named char-set=. 2001-02-28 Niels Möller * src/client.c (init_client_options): Initialize stderr_fork = 1. (client_options): New option --no-cvs-workaround. (client_argp_parser): Handle --no-cvs-workaround. 2001-02-25 Niels Möller * Refer to a function foo as "foo", not "foo()", in messages and comments. (GNU coding standard). 2001-02-22 Niels Möller * src/randomness.c (do_arcfour_random): Spelling fix. * Released lsh-1.1.7. 2001-02-22 Niels Möller * src/io.c (close_fd_read): New function. (do_buffered_read): Call close_fd_read on EOF. This stops reading from the file, and also marks it for closing unless it has a write callback. (do_consuming_read): Likewise. 2001-02-21 Niels Möller * src/io.c (do_consuming_read): Added an assert do check that want_read is true. Check fd->hanged_up first. 2001-02-21 Niels Möller * src/srp_exchange.c (srp_format_proofs): First argument to MAKE_MAC must not have side effects. * src/lsh-keygen.c (main): First argument to A_WRITE must not have side effects. * src/gateway_channel.c (do_gateway_channel_request): First argument to COMMAND_CALL must not have side effects. (do_channel_open_forward): Likewise. * src/lsh.c (do_options2identities): Likewise. * src/connection_commands.c (do_connection_if_srp): Don't use a complex expression as the first argument to COMMAND_CALL. * src/command.h (COMMAND_CALL): Generate a compile error if the first argument is not an lvalue. 2001-02-20 Niels Möller * doc/HACKING: Added section CAVEAT. 2001-02-20 Niels Möller * src/io.c, src/io.h, src/reaper.c, src/unix_interact.c: Added volatile modifier to all uses of sig_atomic_t. * src/client_userauth.c (do_userauth_success): Use verbose, not werror, for success message. 2001-02-19 Niels Möller * src/testsuite/Makefile.am (TS_MORE_PROGS): Added lshg-tcpip-local-test. 2001-02-18 Niels Möller * src/testsuite/tcpip-local-test: Don't pass -r to tcpconnect. grep the output from tcpconnect. * src/testsuite/tcpip-remote-test: Likewise. * src/testsuite/lshg-tcpip-local-test: New test case. * src/testsuite/functions.sh (spawn_lshg): New function. * src/argp/argp-parse.c (argp_default_parser): Let OPT_HANG print the process id to stderr. * src/resource.c (do_remember_resource): If the resource list is dead, immediately kill any resources added to it. * src/lsh.c (main_argp_parser): Check if the action list is empty at ARGP_KEY_END. * src/lshg.c (main_argp_parser): Likewise. * src/io.c (do_consuming_read): Don't close the fd on EOF. (do_buffered_read): Likewise. (sockaddr2info): Silently return NULL for AF_UNIX addresses. * src/client.c (client_argp_parser): Don't check that the length of the action list is non-zero at ARGP_KEY_END. lsh.c may add a gatewaying action later. * configure.in: Bumped version to 1.1.7. 2001-02-13 Niels Möller * src/sftp/sftp-test-client.c: Added more code from Pontus Sköld. 2001-02-13 Niels Möller * src/channel.c (do_exc_finish_channel_handler): Check channel_count to determine if there are channels left. The code used to just check next_channel, which was broken. (alloc_channel): Update channel_count. (dealloc_channel): Likewise. (do_exc_finish_channel_handler): The handler for EXC_FINISH_PENDING shouldn't raise EXC_FINISH_READ. * src/channel.h (channel_table): New attribute channel_count. * src/bignum.c (bignum_random): Added a comment about biased numbers. 2001-02-11 Niels Möller * src/sftp/sftp-server.c: Updated copyright notice to mention Markus Friedl. * src/sftp/filemode.c, src/sftp/filemode.h, src/sftp/idcache.c: New files, copied from GNU Fileutils-4.0. * src/sftp/sftp-test-client.c: Added dummy functions do_ls, do_get, do_put and do_stat, and call them from main. * src/sftp/sftp-server.c: Merged code from Pontus Sköld. (sftp_put_longname_mode): New function. (sftp_put_longname): New function. (sftp_put_filename): New function. (getuser): New dummy function. (getgroup): New dummy function. * src/sftp/buffer.c: Let most output-related functions call exit() directly on failure. (sftp_put_reserve_length): New function, replacing sftp_put_reserve. (sftp_put_length): New function. (sftp_put_final_length): New function. (sftp_put_printf): New function. (sftp_put_strftime): New function. (sftp_clear_attrib): Moved here from sftp-server.c. (sftp_skip_extension): Likewise. (sftp_get_attrib): Likewise. (sftp_put_attrib): Likewise. 2001-02-11 Pavel Roskin * acinclude.m4: Always quote first argument to AC_DEFUN to allow redefining existing macros. * configure.in: Quote the second argument to AC_SEARCH_LIBGMP. 2001-02-08 Niels Möller * src/keyexchange.c (do_kexinit_filter): Don't crash if there are no appropriate hostkeys. 2001-02-08 Niels Möller * src/dsa.c (generic_dsa_sign): Commented out debug statement that leaks information about the secret key. 2001-02-07 Niels Möller * src/algorithms.c (filter_algorithms): Document that the functions may return NULL, and never returns an empty list. 2001-02-04 Niels Möller * Released lsh-1.1.6. * src/ssh-conv (SSH_CONV): Got rid of the bash:isms "if !" and "&>". 2001-02-04 Niels Möller * doc/lsh.texinfo (Action options): Edited the description of the -g, not calling it "gateway mode", as the word "gateway" is associated with the '-G' option. (Invoking lshd): Documented --kerberos-passwords, --password-helper and --login-shell. Changed UPDATED-FOR to 1.1.6. * configure.in: Bumped version to 1.1.6. * src/testsuite/Makefile.am (TS_SH, TS_MORE_SH): Added a few more tests. * src/testsuite/functions.sh: New variable HOSTKEY for configuring which hostkey to use. * src/unix_user.c (unix_user_db): New attribute login_shell. (do_lookup_user): Let self->login_shell, if non-NULL, override the login shell in the passwd database. (make_unix_user_db): New argument login_shell. * src/rsa_keygen.c (rsa_generate_key): Changed "e not invertible" message from werror() to debug(). * src/lshd.c (main_options): New option --login-shell. * src/lsh-keygen.c (main): When generating an rsa key, display a better message before trying again. * src/client_keyexchange.c (do_handle_dh_reply): If the server's signature doesn't verify, display a warning message before disconnecting. * src/rsa.c (parse_ssh_rsa_public): Call rsa_check_size, to make sure that the ->size attribute is initialized. * src/testsuite/key-2.private: Created an RSA testkey. * src/testsuite/write-key-1-test, src/testsuite/write-key-2-test: Renamed keygen-test and keygen-2-test. * src/testsuite/conv-2-test: New test for reading an openssh rsa key. * src/testsuite/conv-1-test: Renamed conv-test. 2001-01-31 Niels Möller * src/server_publickey.c (do_authenticate): Include algorithm atom in "Unknown publickey algorithm"-message. * src/process_atoms (table): Fixed first reverse entry, { "UNKNOWN", 7}. * src/lsh-authorize: Redirect output from the type command to /dev/null. * src/server_password.c (do_authenticate): Don't free the username twice. * src/server_authorization.c (do_key_lookup): Support ssh-rsa keys. * src/lshd.c (main_argp_parser): Support RSA keys for publickey userauth. * src/io.c (io_iter): Changed POLLHUP handling some more. Now POLLHUP && !POLLIN is treated as EOF. 2001-01-31 Niels Möller * src/testsuite/lsh-cat-test: Use compare_output. * src/testsuite/lsh-1-test: Use test_success. * src/testsuite/lsh-2-test: Likewise. * src/testsuite/lsh-3-test: Likewise. * src/testsuite/lsh-4-test: Likewise. * src/testsuite/tcpip-local-test: Likewise. * src/testsuite/tcpip-remote-test: Likewise. * src/testsuite/keygen-2-test: Use functions.sh and test_success. * src/testsuite/keygen-test: Likewise. * src/testsuite/functions.sh (at_exit): Fixed the at_exit mechanism. The previous code always exited successfully. (test_result): New variable for keeping the desired exit status. (test_fail): New function. (test_success): Likewise. (compare_output): Likewise. * src/testsuite/Makefile.am (TS_SH): Added conv-test. * src/testsuite/conv-test: New test program. * src/unix_random.c (background_poll): Changed werror() to debug(). (start_background_poll): Changed werror() to verbose(). * src/tcpforward.c (do_tcpip_eof): Removed channel close logic, now in channel.c, channel_of_handler. * src/ssh-conv: Don't look for lsh-decode-key in the current directory. Added command line options --help, --usage, --decode-with. * src/server_session.c (do_eof): Removed channel close logic, now in channel.c, channel_of_handler. (do_exit_shell): Added a verbose() message. * src/lsh-decode-key.c: Include rsa.h. Added program name prefix to the diagnostic messages. * src/io.c (do_buffered_read, do_consuming_read): Don't call read() if fd->hanged_up is set. (init_file): Initialize hanged_up. 2001-01-30 Niels Möller * src/io.c (io_iter): Improved handling of POLLHUP. Set the fd->hanged_up flag before calling FD_READ(). * src/io.h (lsh_fd): New attribute hanged_up. * src/client.c (do_exit_status): Added a verbose() message. * src/channel.c (channel_read_close_callback): Call channel_eof, not channel_close. (channel_eof_handler): Moved the channel close decision here. 2001-01-29 Niels Möller * src/ssh-conv: Support ssh-rsa keys. * src/lsh-decode-key.c (do_decode_key): Support ssh-rsa keys. 2001-01-24 Niels Möller * src/spki_commands.c (parse_private_key): Generate keypairs with algorithms ATOM_SSH_RSA, ATOM_SPKI_SIGN_RSA and ATOM_SPKI_SIGN_DSS. * src/rsa.c (do_rsa_verify): Replaced ATOM_RSA_PKCS1_SHA1 with ATOM_SSH_RSA, and replaced ATOM_SPKI with ATOM_SPKI_SIGN_RSA and ATOM_SPKI_SIGN_DSS. (do_rsa_sign): Likewise. (parse_ssh_rsa_public): New function. (make_ssh_rsa_verifier): New function. * src/pkcs5-test.c: Include both unistd.h and stdlib.h, do get a declaration of getopt(). * src/lsh.c (do_lsh_lookup): Handle ATOM_SSH_RSA. (do_lsh_lookup): Replace ATOM_SPKI with ATOM_SPKI_SIGN_RSA and ATOM_SPKI_SIGN_DSS. * src/dsa.c (do_dsa_verify): Check that there's no trailing garbage. (do_dsa_verify): Replace ATOM_SPKI with ATOM_SPKI_SIGN_RSA and ATOM_SPKI_SIGN_DSS. (do_dsa_sign): Likewise. * src/atoms.in: Updated algorithm names to match draft-ietf-secsh-transport-09.txt. * src/algorithms.c (algorithms_argp_parser): Replace ATOM_SPKI with ATOM_SPKI_SIGN_RSA and ATOM_SPKI_SIGN_DSS. (lookup_hostkey_algorithm): Likewise. * src/Makefile.am.in: Removed $(srcdir) prefixes from targets. * src/testsuite/Makefile.am (%.c): Likewise. * configure.in (PREFIX): Replace NONE with $ac_default_prefix. (SBINDIR): MAke a #define from sbindin. Currently broken. * acconfig.h: Added SBINDIR. 2001-01-23 Niels Möller * src/tcpforward.c (do_tcpip_eof): Call shutdown(socket, SHUT_WR), to signal to the local peer that there's no more data. 2001-01-18 Niels Möller * src/lshd.c (KERBEROS_HELPER): Added /sbin/ between PREFIX and the program name. Note that PREFIX seems to get a bogus value "NONE" if the default prefix is used. * src/sftp: New directory. Not compiled or used by default. 2001-01-17 Niels Möller * src/lsh_types.h: Improved formatting. * src/channel.c (alloc_channel): Use UINT32, not int, for new_size. 2001-01-15 Niels Möller * misc/bootstrap.sh: Fixed comment. * src/argp/argp.h: #define PRINTF_STYLE, and use it instead of using __attribute__ directly. * src/lsh-keygen.c (main_argp_parser): Don't use optarg (reported by jps). * Added Markus Friedl's sftp-server.c to contrib, for some random hacking. 2001-01-10 Niels Möller * src/pkcs5-test.c: Include stdlib.h instead of getopt.h. 2001-01-10 Niels Möller * Released lsh-1.1.5. * configure.in: Bumped version to 1.1.5. 2001-01-09 Niels Möller * src/rsync/send.c: Deleted old code. * src/rsync/send.c (rsync_send_init): Rewrote. Allocates a slightly larger buffer. (rsync_send_eof): New function. (rsync_send_copy_in): Deleted th dst argument. Update sum_md5 and size. (rsync_send_read): New function. (rsync_send_search): New function. (rsync_send_flush): New function. (rsync_send_write): New function. (rsync_send): Rewrote and simplified. Now uses fewer states, simpler eof handling, and calls several smaller functions. * src/rsync/rsync.h (RSYNC_SUM_SIZE): Rename RSYNC_SUM_LENGTH. (rsync_result_t): New enum for return types. (struct rsync_receive_state): Renamed attribute full_sum to sum_md5. (struct rsync_receive_state): Made the state attribute an enum. Moved the constants from receive.c, and renamed them to use a RSYNC_RECIEVE_-prefix. (struct rsync_send_state): Changed state and buffering. * src/rsync/generate.c, src/rsync/receive.c, src/rsync/send.c, src/rsync/rsync.h: Changed return types from int to enum rsync_result_t. * src/rsync/checksum.c (rsync_search): Renamed argument FOUND to DONE, and set it properly for both successful and unsuccessful searches. * src/rsync/receive.c (rsync_receive_mode): Use an enum instead of defines. (rsync_update): Hash data on output. (rsync_receive) STATE_LITERAL: Update avail_in and next_in after calling rsync_update. 2001-01-07 Niels Möller * src/argp/argp.h: Added _argp_short_program_name and __argp_short_program_name. * src/argp/argp-parse.c (parser_init): Use argp_short_program_name. (parser_parse_next): Removed old permutation handling code. 2001-01-06 Niels Möller * src/argp/argp-namefrob.h: Added _argp_short_program_name. 2001-01-02 Niels Möller * src/argp/argp-help.c (hol_entry_help): Avoid using a non-constant struct initializer. (UNUSED): Define as a macro expanding to __attribute__ ..., if compiling with gcc. * src/argp/argp-fmtstream.h (PRINTF_STYLE): Define this macro, to expand to __attribute__ ... if compiling with gcc. * src/argp/argp-fmtstream.c (__argp_fmtstream_write, __argp_fmtstream_puts, __argp_fmtstream_putc): Duplicate the inline definitions in argp-fmtstream.h, for compilers that don't do inlining. * src/unix_random.c (random_sources): Fixed bug in initialization of the HAS_ALTERNATIVE fields. Noted by jps. 2000-12-28 Niels Möller * src/lsh.c: Don't include unistd.h. (main_argp_parser): Fixed bogus references to optarg (reported by jps). * src/argp/argp-help.c (fill_in_uparams): Use unsigned char * for VAR and ARG. Fixed calls of isalnum, isspace and friends, reported by Kalle Olavi Niemitalo. (canon_doc_option): Fixed calls of isalnum, isspace and friends, reported by Kalle Olavi Niemitalo. (hol_entry_cmp): Fixed calls of tolower, reported by Kalle Olavi Niemitalo. 2000-12-23 Niels Möller * Released lsh-1.1.4. 2000-12-23 Niels Möller * src/argp/acinclude.m4: New file. * src/argp/acinclude.m4: Reverted the definition of AC_CHECK_VAR to take includes as argument, and renamed it to ARGP_CHECK_VAR. 2000-12-23 Niels Möller * src/Makefile.am.in (EXTRA_DIST): Removed references to the getopt files getopt.c, getopt.h and getopt1.c. * configure.in: Removed getopt-related tests (previously just commented out). 2000-12-23 Niels Möller * src/getopt.c, src/getopt1.c, src/getopt.h: Removed. 2000-12-22 Niels Möller * src/testsuite/Makefile.am (LDADD): Link with libargp. ($(srcdir)/%.c): Fix $(srcdir)-handling. * src/Makefile.am.in (bootstrap): New target, replaces the post-configure work previously done by misc/bootstrap.sh * Makefile.am.in (bootstrap): New target. 2000-12-11 Niels Möller * Removed getopt.c, getopt.h and getopt1.c from the src/argp directory. * src/lsh.c (do_options2identities): Pass two alists to make_spki_read_userkeys (reported by jps). * src/spki_commands.c (make_spki_read_userkeys): Use separate alists for symmetric algorithms and signature algorithms (reported by jps). * src/abstract_crypto.c (crypt_string_unpad): Adjust length properly (reported by jps). * src/argp/argp-parse.c (match_option, ARGP_COMPLETE): #if:ed out completion code for long options. 2000-12-09 Niels Möller * src/Makefile.am.in (LDADD, lshg_LDADD): Use @LIBARGP@ * misc/bootstrap.sh: Use set -e. Bootstrap in the src/argp subdirectory. 2000-11-30 Niels Möller * src/argp/argp-parse.c (match_option): Better abbreviations. Replaced try_getopt with args_only, changed calling convention for parser_parse_arg. * src/argp/configure.in: Don't check for getopt. * src/argp/argp.h: Don't include getopt.h. * src/argp/argp-parse.c (calc_sizes): Updated comment. 2000-11-29 Niels Möller * src/argp/configure.in: Use AC_REPLACE_FUNCS for mempcpy, strndup and strchrnul. (AC_CHECK_VAR): Changed second argument to take the type of the variable. * src/argp/argp-parse.c (struct parser): New fields posixly_correct and ordering. (parser_init): Choose ordering. (enum arg_type): New value ARG_LONG_ONLY. (parser_parse_next): Added error messages similar to getopt's. * src/argp/argp-help.c (STRNDUP): New macro to refer to strndup or __strndup, as appropriate. (STRERROR): Define this macro as a wrapper for strerror or sys_errlist. (__argp_basename): New function. * src/argp/argp-namefrob.h (__argp_basename): Added __argp_basename. * src/argp/Makefile.am (libargp_a_LIBADD): Include LIBOBJS in libargp.a. * src/argp/argp.h: Added prototype for _argp_basename and __argp_basename. * src/argp/strndup.c, src/argp/strchrnul.c src/argp/mempcpy.c: Moved replacement functions to separate files. 2000-11-28 Niels Möller * src/argp/argp-parse.c: Deleted getopt-related code. (struct parser): New field nextchar. Deleted fields try_getotp and long_opts. (find_short_option): New function. (match_option): New function. (find_long_option): New function. (struct parser_convert_state): Deleted field long_end. (convert_options): Don't build getopt_long-style option array. (parser_convert): Deleted FLAGS arument. (struct parser_sizes): Deleted field long_len. (parser_init): Set short_opts to NULL, unless ARGP_LONG_ONLY is used. (classify_arg): New function. (parser_parse_next): Don't use getopt_long(). 2000-11-27 Niels Möller * configure.in: Use AC_LIB_ARGP. * acinclude.m4 (AC_LIB_ARGP): New test. * src/argp/argp-help.c (argp_doc): Use the name strndup, not __strndup. That probably breaks glibc builds. 2000-11-27 Niels Möller * src/argp/argp-test.c (asprintf): Bug fix. * src/argp/argp.h: Dummy definition of __THROW. * src/argp/argp-test.c: Fixed asprintf implementation. * src/argp/argp-parse.c (__argp_usage, __option_is_short, __option_is_end): Define these function, in case the user isn't inlining them. * src/argp/argp-help.c: #define __mempcpy if needed. Use unsigned arguments to the ctype macros. Handle systems where program_invocation_name and program_invocation_short_name doesn't exist. * src/argp/argp-help.c (short_program_name): New function. * src/argp/Makefile.am: Use @LIBOBJS@ when building test program. * src/argp/configure.in: Check for getopt_long. Substitute LIBOBJS. Add -I$srcdir to CPPFLAGS. * src/argp: Added getopt.h, getopt.c and getopt1.c, which are needed for separate compilation of argp. 2000-11-27 Niels Möller * Updated argp from glibc-2.2. * Released lsh-1.1.3. * src/client.c (client_argp_parser): Handle remote_forward properly, and install a channel_open_forwarded_tcpip handler if needed (recovered from an earlier lsh.c). Some other cleanup. * src/abstract_crypto.h: Some cleanup. * src/abstract_io.h: Likewise. * src/channel.c: Likewise. * src/channel.h: Likewise. * src/channel_commands.h: Likewise. * src/connection.h: Likewise. * src/connection_commands.c: Likewise. * src/dh_exchange.c: Likewise. * src/exception.h: Likewise. * src/gateway.c: Likewise. * src/gateway_channel.c: Likewise. * src/gateway_commands.c: Likewise. * src/handshake.c: Likewise. * src/handshake.h: Likewise. * src/io.h: Likewise. * src/io_commands.c: Likewise. * src/io_commands.h: Likewise. * src/keyexchange.h: Likewise. * src/lsh.c: Likewise. * src/lsh_proxy.c: Likewise. * src/lshg.c: Likewise. * src/publickey_crypto.h: Likewise. * src/randomness.c: Likewise. * src/randomness.h: Likewise. * src/read_packet.c: Likewise. * src/rsa.c: Likewise. * src/server_pty.h: Likewise. * src/server_session.c: Likewise. * src/sexp.h: Likewise. * src/sexp_parser.c: Likewise. * src/sexp_streamed_parser.c: Likewise. * src/sexp_test.c: Likewise. * src/spki_commands.c: Likewise. * src/spki_commands.h: Likewise. * src/ssh1_fallback.c: Likewise. * src/tcpforward.c: Likewise. * src/unix_random.c: Likewise. * src/zlib.c: Likewise. 2000-11-26 Niels Möller * src/parse.c (parse_rest, parse_rest_copy): Renamed parse_rest to parse_rest_copy. New function parse_rest. * src/gateway_channel.c (do_gateway_channel_request): Use format_channel_request_i(). (gateway_channel_open_continuation): New attribute fallback. (do_gateway_channel_open_continuation): Set the target channel's request_fallback pointer. (do_channel_open_forward): Set the origin channel's request_fallback pointer. * src/channel.h (ssh_channel): Added request_fallback attribute. (channel_request_info): New struct. (channel_request): Use a channel_request_info argument. * src/channel.c (parse_channel_request): New function. (DEFINE_PACKET_HANDLER): Use parse_channel_request. Invoke request fallback if appropriate. (init_channel): Initialize request_fallback = NULL. (format_channel_open_s): Use a struct lsh_string for the type argument. (format_channel_request_i): New function. * src/spki_commands.c (spki_read_userkeys): Try to decrypt the key. (make_spki_read_userkeys): New argument tty. If supplied, try to decrypt password protected keys. * src/proxy_agentforward.c (do_proxy_open_auth_agent): Updated to use struct channel_open_info. * src/proxy_x11forward.c (do_proxy_open_x11): Likewise. * src/proxy_tcpforward.c (do_proxy_open_direct_tcpip): Likewise. * src/proxy_session.c (do_proxy_open_session): Likewise. * src/server_session.c (do_open_session): Likewise. * src/tcpforward.c: Likewise. * src/parse.c (parse_rest): New function. * src/lshg.c: Use new client.c option parsing. * src/lsh_proxy.c: Adapted to stricter alist typing. * src/lshd.c: Likewise. * src/reaper.c: Likewise. * src/server_publickey.c: Likewise. * src/spki.c: Likewise. * src/lsh.c: Moved some of the option parsing to client.c. * src/gateway_commands.c (gateway_make_connection): Install an open_fallback. * src/gateway_channel.c (gateway_channel_open_command): Use a string instead of an atom to represent the chennel type. (do_gateway_channel_open): Use format_channel_opn_s(). (make_gateway_channel_open_command): Take an struct channel_open_info * as argument. (do_channel_open_forward): New function. (gateway_channel_open_forward): Channel open handler that forwards any channel open request, of any type. * src/client_session.c (client_session_channel): Renamed the class client_session. * src/client.h (CLIENT_ARGP_ACTION_GROUP): New constant. (CLIENT_ARGP_MODIFIER_GROUP): New constant. (client_options): New class. * src/client.c: Moved most of the option parsing from lsh.c to this file. * src/channel.c (make_channel_table): Initialize open_fallback = NULL; (global_request_handler): Prepared for using a fallback handler. (channel_request_handler): Likewise. (channel_open_continuation): Renamed attributes to send_window_size and send_max_packet. (parse_channel_open): New function. (DEFINE_PACKET_HANDLER): Use parse_channel_open. Invoke open_fallback if there's no more specific handler for the channel type. (format_channel_open_s): New function. (format_channel_open_a): New function (currently #if:ed out). * src/channel.h (struct channel_open_info): New struct to represent the common information in SSH_MSH_CHANNEL_OPEN. (channel_table): New attribute open_fallback. (channel_open): Use a channel_open_info for the arguments. * src/alist.h (alist): Use struct lsh_object *, not void *, to pass values. * src/alist.c (alist_select): New function. * src/algorithms.c (make_algorithms_options): New function. * doc/TODO: Some updates. * configure.in: Bumped version to 1.1.3. 2000-11-20 Niels Möller * src/algorithms.h, src/client.h, src/client_keyexchange.c, src/client_userauth.c, src/connection.c, src/format.h, src/interact.c, src/interact.h, src/io.c, src/io.h, src/lsh-writekey.c, src/lsh.c, src/lshd.c, src/reaper.c, src/reaper.h, src/server_session.c, src/spki.c, src/spki_commands.c, src/srp-gen.c, src/tty.c, src/tty.h: Removed old #if:ed out code. * ChangeLog: Rotated ChangeLog, creating ChangeLog.2.