Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package sshpass for openSUSE:Factory checked in at 2023-03-07 16:50:29 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/sshpass (Old) and /work/SRC/openSUSE:Factory/.sshpass.new.31432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sshpass" Tue Mar 7 16:50:29 2023 rev:5 rq:1069841 version:1.10 Changes: -------- --- /work/SRC/openSUSE:Factory/sshpass/sshpass.changes 2021-03-30 21:00:19.032712461 +0200 +++ /work/SRC/openSUSE:Factory/.sshpass.new.31432/sshpass.changes 2023-03-07 16:50:55.593771599 +0100 @@ -1,0 +2,12 @@ +Tue Mar 7 07:36:57 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 1.10: + * Remove sig unsafe functions from signal handler (Ticket #22). + * Allow -e to explicitly specify the environment variable to + use + * Unset the variable specified with -e before calling + subprogram + * Change the logic for setting a controlling TTY. Fixes + compatibility issues with OpenSolaris and MSYS/Cygwin. + +------------------------------------------------------------------- Old: ---- sshpass-1.09.tar.gz New: ---- sshpass-1.10.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ sshpass.spec ++++++ --- /var/tmp/diff_new_pack.iJ1Pk7/_old 2023-03-07 16:50:56.097774257 +0100 +++ /var/tmp/diff_new_pack.iJ1Pk7/_new 2023-03-07 16:50:56.101774278 +0100 @@ -1,7 +1,7 @@ # # spec file for package sshpass # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,12 +17,12 @@ Name: sshpass -Version: 1.09 +Version: 1.10 Release: 0 Summary: Non-interactive SSH authentication utility License: GPL-2.0-or-later Group: System/Management -URL: http://sshpass.sourceforge.net/ +URL: https://sshpass.sourceforge.net/ Source0: https://downloads.sourceforge.net/sshpass/sshpass-%{version}.tar.gz %description @@ -35,15 +35,15 @@ %build %configure -make %{?_smp_mflags} +%make_build %install -make %{?_smp_mflags} DESTDIR=%{buildroot} install +%make_install %files %license COPYING %doc AUTHORS ChangeLog NEWS %{_bindir}/sshpass -%{_mandir}/man1/sshpass.1%{ext_man} +%{_mandir}/man1/sshpass.1%{?ext_man} %changelog ++++++ sshpass-1.09.tar.gz -> sshpass-1.10.tar.gz ++++++ ++++ 12550 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/ChangeLog new/sshpass-1.10/ChangeLog --- old/sshpass-1.09/ChangeLog 2021-01-29 17:21:07.000000000 +0100 +++ new/sshpass-1.10/ChangeLog 2023-02-12 03:51:18.000000000 +0100 @@ -1,3 +1,14 @@ +Version 1.10 + * Convert repo to git + * Remove sig unsafe functions from signal handler (Ticket #22). + * Allow -e to explicitly specify the environment variable to use + (Ticket #5). + * Unset the variable specified with -e before calling subprogram + (Ticket #25). + * Change the logic for setting a controlling TTY. Fixes compatibility + issues with OpenSolaris and MSYS/Cygwin. Thanks Marcin Olszewski for + the fix. + Version 1.09 * Explicitly set the controlling TTY (SF patch #7) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/INSTALL new/sshpass-1.10/INSTALL --- old/sshpass-1.09/INSTALL 2020-02-07 08:55:40.000000000 +0100 +++ new/sshpass-1.10/INSTALL 2022-05-28 10:21:16.000000000 +0200 @@ -1,8 +1,8 @@ Installation Instructions ************************* - Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software -Foundation, Inc. + Copyright (C) 1994-1996, 1999-2002, 2004-2017, 2020-2021 Free +Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -225,7 +225,7 @@ and if that doesn't work, install pre-built binaries of GCC for HP-UX. - HP-UX 'make' updates targets which have the same time stamps as their + HP-UX 'make' updates targets which have the same timestamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/compile new/sshpass-1.10/compile --- old/sshpass-1.09/compile 2020-02-07 08:55:40.000000000 +0100 +++ new/sshpass-1.10/compile 2022-05-28 10:21:16.000000000 +0200 @@ -1,9 +1,9 @@ #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. -scriptversion=2012-10-14.11; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2021 Free Software Foundation, Inc. # Written by Tom Tromey <tro...@cygnus.com>. # # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -53,7 +53,7 @@ MINGW*) file_conv=mingw ;; - CYGWIN*) + CYGWIN* | MSYS*) file_conv=cygwin ;; *) @@ -67,7 +67,7 @@ mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; - cygwin/*) + cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) @@ -255,7 +255,8 @@ echo "compile $scriptversion" exit $? ;; - cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac @@ -339,9 +340,9 @@ # Local Variables: # mode: shell-script # sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/config.h.in new/sshpass-1.10/config.h.in --- old/sshpass-1.09/config.h.in 2021-01-29 17:21:17.000000000 +0100 +++ new/sshpass-1.10/config.h.in 2023-02-12 03:50:50.000000000 +0100 @@ -13,8 +13,8 @@ to 0 otherwise. */ #undef HAVE_MALLOC -/* Define to 1 if you have the <memory.h> header file. */ -#undef HAVE_MEMORY_H +/* Define to 1 if you have the <minix/config.h> header file. */ +#undef HAVE_MINIX_CONFIG_H /* Define to 1 if you have the `posix_openpt' function. */ #undef HAVE_POSIX_OPENPT @@ -25,6 +25,9 @@ /* Define to 1 if you have the <stdint.h> header file. */ #undef HAVE_STDINT_H +/* Define to 1 if you have the <stdio.h> header file. */ +#undef HAVE_STDIO_H + /* Define to 1 if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H @@ -67,6 +70,9 @@ /* Define to 1 if you have the <vfork.h> header file. */ #undef HAVE_VFORK_H +/* Define to 1 if you have the <wchar.h> header file. */ +#undef HAVE_WCHAR_H + /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK @@ -109,51 +115,109 @@ /* Define to the type of arg 5 for `select'. */ #undef SELECT_TYPE_ARG5 -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE #endif /* Version number of package */ #undef VERSION -/* Define to 1 if on MINIX. */ -#undef _MINIX - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE - /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc -/* Define to `int' if <sys/types.h> does not define. */ +/* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t /* Define to `int' if <sys/types.h> does not define. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/configure.ac new/sshpass-1.10/configure.ac --- old/sshpass-1.09/configure.ac 2021-01-29 17:21:12.000000000 +0100 +++ new/sshpass-1.10/configure.ac 2023-02-12 03:50:43.000000000 +0100 @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.57) -AC_INIT([sshpass], [1.09]) +AC_INIT([sshpass], [1.10]) AM_INIT_AUTOMAKE AC_COPYRIGHT([Copyright (C) 2006,2008,2011,2016,2021 Shachar Shemesh]) AC_CONFIG_SRCDIR([main.c]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/main.c new/sshpass-1.10/main.c --- old/sshpass-1.09/main.c 2021-01-29 14:15:03.000000000 +0100 +++ new/sshpass-1.10/main.c 2023-02-12 03:45:49.000000000 +0100 @@ -29,6 +29,7 @@ #include <sys/ioctl.h> #include <sys/select.h> +#include <assert.h> #include <unistd.h> #include <fcntl.h> #include <signal.h> @@ -50,6 +51,7 @@ RETURN_INCORRECT_PASSWORD, RETURN_HOST_KEY_UNKNOWN, RETURN_HOST_KEY_CHANGED, + RETURN_HELP, }; // Some systems don't define posix_openpt @@ -61,12 +63,15 @@ } #endif +#define DEFAULT_ENV_PASSWORD "SSHPASS" + int runprogram( int argc, char *argv[] ); void reliable_write( int fd, const void *data, size_t size ); int handleoutput( int fd ); void window_resize_handler(int signum); void sigchld_handler(int signum); void term_handler(int signum); +void term_child(int signum); int match( const char *reference, const char *buffer, ssize_t bufsize, int state ); void write_pass( int fd ); @@ -83,19 +88,34 @@ char *orig_password; } args; +static void hide_password() +{ + assert(args.pwsrc.password==NULL); + + args.pwsrc.password = strdup(args.orig_password); + + // Hide the original password from prying eyes + while( *args.orig_password != '\0' ) { + *args.orig_password = '\0'; + ++args.orig_password; + } + + args.orig_password = NULL; +} + static void show_help() { - printf("Usage: " PACKAGE_NAME " [-f|-d|-p|-e] [-hV] command parameters\n" - " -f filename Take password to use from file\n" - " -d number Use number as file descriptor for getting password\n" - " -p password Provide password as argument (security unwise)\n" - " -e Password is passed as env-var \"SSHPASS\"\n" - " With no parameters - password will be taken from stdin\n\n" - " -P prompt Which string should sshpass search for to detect a password prompt\n" - " -v Be verbose about what you're doing\n" - " -h Show help (this screen)\n" - " -V Print version information\n" - "At most one of -f, -d, -p or -e should be used\n"); + printf("Usage: " PACKAGE_NAME " [-f|-d|-p|-e[env_var]] [-hV] command parameters\n" + " -f filename Take password to use from file.\n" + " -d number Use number as file descriptor for getting password.\n" + " -p password Provide password as argument (security unwise).\n" + " -e[env_var] Password is passed as env-var \"env_var\" if given, \"SSHPASS\" otherwise.\n" + " With no parameters - password will be taken from stdin.\n\n" + " -P prompt Which string should sshpass search for to detect a password prompt.\n" + " -v Be verbose about what you're doing.\n" + " -h Show help (this screen).\n" + " -V Print version information.\n" + "At most one of -f, -d, -p or -e should be used.\n"); } // Parse the command line. Fill in the "args" global struct with the results. Return argv offset @@ -113,7 +133,7 @@ fprintf(stderr, "Conflicting password source\n"); \ error=RETURN_CONFLICTING_ARGUMENTS; } - while( (opt=getopt(argc, argv, "+f:d:p:P:heVv"))!=-1 && error==-1 ) { + while( (opt=getopt(argc, argv, "+f:d:p:P:he::Vv"))!=-1 && error==-1 ) { switch( opt ) { case 'f': // Password should come from a file @@ -146,24 +166,29 @@ VIRGIN_PWTYPE; args.pwtype=PWT_PASS; - args.orig_password=getenv("SSHPASS"); + if( optarg==NULL ) + optarg = "SSHPASS"; + args.orig_password=getenv(optarg); + if( args.orig_password==NULL ) { - fprintf(stderr, "SSHPASS: -e option given but SSHPASS environment variable not set\n"); + fprintf(stderr, "sshpass: -e option given but \"%s\" environment variable is not set.\n", optarg); error=RETURN_INVALID_ARGUMENTS; } + + hide_password(); + unsetenv(optarg); break; case '?': case ':': error=RETURN_INVALID_ARGUMENTS; break; case 'h': - error=RETURN_NOERROR; - break; + return -(RETURN_HELP+1); case 'V': printf("%s\n" "(C) 2006-2011 Lingnu Open Source Consulting Ltd.\n" - "(C) 2015-2016, 2021 Shachar Shemesh\n" + "(C) 2015-2016, 2021-2022 Shachar Shemesh\n" "This program is free software, and can be distributed under the terms of the GPL\n" "See the COPYING file for more information.\n" "\n" @@ -183,9 +208,14 @@ { int opt_offset=parse_options( argc, argv ); + if( opt_offset==-(RETURN_HELP+1) ) { + show_help(); + return 0; + } + if( opt_offset<0 ) { // There was some error - show_help(); + fprintf(stderr, "Use \"sshpass -h\" to get help\n"); return -(opt_offset+1); // -1 becomes 0, -2 becomes 1 etc. } @@ -197,13 +227,7 @@ } if( args.orig_password!=NULL ) { - args.pwsrc.password = strdup(args.orig_password); - - // Hide the original password from prying eyes - while( *args.orig_password != '\0' ) { - *args.orig_password = 'x'; - ++args.orig_password; - } + hide_password(); } return runprogram( argc-opt_offset, argv+opt_offset ); @@ -214,7 +238,7 @@ static int masterpt; int childpid; -int term; +int termsig; int runprogram( int argc, char *argv[] ) { @@ -310,18 +334,16 @@ // Detach us from the current TTY setsid(); - // This line makes the ptty our controlling tty. We do not otherwise need it open - slavept=open(name, O_RDWR ); -#ifdef TIOCSCTTY - // On some systems, an open(2) is insufficient to set the - // controlling tty (see the documentation for TIOCSCTTY in - // tty(4)). - if (ioctl(slavept, TIOCSCTTY) == -1) { + + // Attach the process to a controlling TTY. + slavept=open(name, O_RDWR | O_NOCTTY); + // On some systems, an open(2) is insufficient to set the controlling tty (see the documentation for + // TIOCSCTTY in tty(4)). + if (ioctl(slavept, TIOCSCTTY, 0) == -1) { perror("sshpass: Failed to set controlling terminal in child (TIOCSCTTY)"); exit(RETURN_RUNTIME_ERROR); } -#endif - close( slavept ); + close( slavept ); // We don't need the controlling TTY actually open close( masterpt ); @@ -362,6 +384,16 @@ int selret=pselect( masterpt+1, &readfd, NULL, NULL, NULL, &sigmask_select ); + if( termsig!=0 ) { + // Copying termsig isn't strictly necessary, as signals are masked at this point. + int signum = termsig; + termsig = 0; + + term_child(signum); + + continue; + } + if( selret>0 ) { if( FD_ISSET( masterpt, &readfd ) ) { int ret; @@ -547,6 +579,13 @@ void term_handler(int signum) { + // BUG: There is a potential race here if two signals arrive before the main code had a chance to handle them. + // This seems low enough risk not to justify the extra code to correctly handle this. + termsig = signum; +} + +void term_child(int signum) +{ fflush(stdout); switch(signum) { case SIGINT: @@ -560,8 +599,6 @@ kill( childpid, signum ); } } - - term = 1; } void reliable_write( int fd, const void *data, size_t size ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/missing new/sshpass-1.10/missing --- old/sshpass-1.09/missing 2020-02-07 08:55:40.000000000 +0100 +++ new/sshpass-1.10/missing 2022-05-28 10:21:16.000000000 +0200 @@ -1,9 +1,9 @@ #! /bin/sh # Common wrapper for a few potentially missing GNU programs. -scriptversion=2013-10-28.13; # UTC +scriptversion=2018-03-07.03; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2021 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard <pin...@iro.umontreal.ca>, 1996. # This program is free software; you can redistribute it and/or modify @@ -17,7 +17,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. +# along with this program. If not, see <https://www.gnu.org/licenses/>. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -101,9 +101,9 @@ exit $st fi -perl_URL=http://www.perl.org/ -flex_URL=http://flex.sourceforge.net/ -gnu_software_URL=http://www.gnu.org/software +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software program_details () { @@ -207,9 +207,9 @@ exit $st # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/sshpass-1.09/sshpass.1 new/sshpass-1.10/sshpass.1 --- old/sshpass-1.09/sshpass.1 2021-01-29 13:47:13.000000000 +0100 +++ new/sshpass-1.10/sshpass.1 2022-05-28 10:14:04.000000000 +0200 @@ -1,10 +1,10 @@ -.TH SSHPASS 1 "January 29, 2021" "Lingnu Open Source Consulting" "Sshpass User Manual" +.TH SSHPASS 1 "May 27, 2022" "Shachar Shemesh" "Sshpass User Manual" .\" Please adjust this date whenever revising the manpage. .SH NAME sshpass \- noninteractive ssh password provider .SH SYNOPSIS .B sshpass -.RB [ -f\fIfilename | -d\fInum | -p\fIpassword | -e ] +.RB [ \-f\fIfilename | \-d\fInum | \-p\fIpassword | \-e[\fIenv_var ]] .RI [ options ] " command arguments" .br .SH DESCRIPTION @@ -35,8 +35,9 @@ \fInumber\fP is a file descriptor inherited by sshpass from the runner. The password is read from the open file descriptor. .TP -.B \-e -The password is taken from the environment variable "SSHPASS". +.B \-e\fP[\fIenv_var\fP] +The password is taken from an environment variable. If \fIenv_var\fP is supplied, that is +the environment variable used. If not, the password is taken from the variable \fBSSHPASS\fP. .TP .B \-P Set the password prompt. Sshpass searched for this prompt in the program's @@ -108,11 +109,6 @@ SSHPASS=12345 rsync \-\-rsh='sshpass \-e ssh \-l test' host.example.com:path . .SH BUGS .P -Sshpass is in its infancy at the moment. As such, bugs are highly possible. In -particular, if the password is read from stdin (no password option at all), it -is possible that some of the input aimed to be passed to ssh will be read by -sshpass and lost. -.P Sshpass utilizes the \fBpty\fR(7) interface to control the TTY for ssh. This interface, at least on Linux, has a misfeature where if no slave file descriptors are open, the master pty returns \fBEIO\fR. This is the normal behavior, except a slave pty may