Hello community,
here is the log from the commit of package pwgen for openSUSE:Factory checked in at 2017-11-08 15:11:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pwgen (Old)
and /work/SRC/openSUSE:Factory/.pwgen.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pwgen"
Wed Nov 8 15:11:54 2017 rev:22 rq:539827 version:2.08
Changes:
--------
--- /work/SRC/openSUSE:Factory/pwgen/pwgen.changes 2015-08-01 11:34:42.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pwgen.new/pwgen.changes 2017-11-08 15:15:59.373222247 +0100
@@ -1,0 +2,17 @@
+Wed Nov 8 04:07:13 UTC 2017 - aavindraa@gmail.com
+
+- updated to version 2.08
+ * Suppress trailing space after the last password
+ * Make pwgen -s more "secure" for 1 and 2 character passwords
+ * Fix option parsing of "pwgen --no-capitalize --no-vowels"
+ * Add new option --remove-chars which removes chars from the set of
+ characters used to generate passwords
+ * Add cross-compilation to debian/rules
+ * Update control and copyright files to point at pwgen at github for
+ the home directory and primary git repository
+- Drop 1 hunk that was fixed upsteam in pwgen-2.06-fdleaks.patch
+ * merged in df7d8419ee44088eeeb9df92074914a659e90b15
+- Cleanup spec file with spec-cleaner
+- Use macros more extensively in spec file
+
+-------------------------------------------------------------------
Old:
----
pwgen-2.07.tar.gz
pwgen-2.07.tar.gz.asc
New:
----
pwgen-2.08.tar.gz
pwgen-2.08.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pwgen.spec ++++++
--- /var/tmp/diff_new_pack.w4euwk/_old 2017-11-08 15:15:59.917202392 +0100
+++ /var/tmp/diff_new_pack.w4euwk/_new 2017-11-08 15:15:59.921202246 +0100
@@ -1,7 +1,7 @@
#
# spec file for package pwgen
#
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,19 +17,18 @@
Name: pwgen
-Version: 2.07
+Version: 2.08
Release: 0
Summary: Password generator
License: GPL-2.0+
Group: Productivity/Security
Url: http://sourceforge.net/projects/pwgen/
-Source0: http://downloads.sourceforge.net/project/pwgen/pwgen/%{version}/pwgen-%{version}.tar.gz
-Source1: http://downloads.sourceforge.net/project/pwgen/pwgen/%{version}/pwgen-%{version}.tar.gz.asc
+Source0: http://downloads.sourceforge.net/project/%{name}/%{name}/%{version}/%{name}-%{version}.tar.gz
+Source1: http://downloads.sourceforge.net/project/%{name}/%{name}/%{version}/%{name}-%{version}.tar.gz.asc
Source2: %{name}.keyring
Patch0: pwgen-2.06-fdleaks.patch
BuildRequires: autoconf
BuildRequires: automake
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
pwgen generates random, meaningless but pronounceable and thus easy to
@@ -46,13 +45,10 @@
make %{?_smp_mflags}
%install
-mkdir -p %{buildroot}%{_bindir}
-mkdir -p %{buildroot}%{_mandir}/man1
-make DESTDIR=%{buildroot} install %{?_smp_mflags}
+%make_install
%files
-%defattr(-,root,root)
-%{_mandir}/man1/*
-%{_bindir}/pwgen
+%{_mandir}/man1/%{name}.1%{ext_man}
+%{_bindir}/%{name}
%changelog
++++++ pwgen-2.06-fdleaks.patch ++++++
--- /var/tmp/diff_new_pack.w4euwk/_old 2017-11-08 15:15:59.953201077 +0100
+++ /var/tmp/diff_new_pack.w4euwk/_new 2017-11-08 15:15:59.957200931 +0100
@@ -1,17 +1,5 @@
Index: sha1num.c
===================================================================
---- sha1num.c.orig 2007-07-05 01:42:19.000000000 +0200
-+++ sha1num.c 2009-10-02 04:17:46.000000000 +0200
-@@ -53,6 +53,7 @@ void pw_sha1_init(char *sha1)
- while( ( i = fread( buf, 1, sizeof( buf ), f ) ) > 0 ) {
- sha1_update( &sha1_ctx, buf, i );
- }
-+ fclose(f);
-
- return;
- }
-Index: sha1.c
-===================================================================
--- sha1.c.orig 2007-07-05 01:42:19.000000000 +0200
+++ sha1.c 2009-10-02 02:33:01.000000000 +0200
@@ -383,6 +383,8 @@ int main( argc, argv )
++++++ pwgen-2.07.tar.gz -> pwgen-2.08.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/.gitignore new/pwgen-2.08/.gitignore
--- old/pwgen-2.07/.gitignore 2007-07-05 01:14:26.000000000 +0200
+++ new/pwgen-2.08/.gitignore 2017-08-07 06:36:54.000000000 +0200
@@ -4,4 +4,6 @@
config.status
configure
pwgen
+build
+autom4te.cache
*.o
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/Makefile.in new/pwgen-2.08/Makefile.in
--- old/pwgen-2.07/Makefile.in 2014-10-28 04:41:47.000000000 +0100
+++ new/pwgen-2.08/Makefile.in 2017-08-07 06:52:36.000000000 +0200
@@ -1,4 +1,4 @@
-PWGEN_VERSION=2.07
+PWGEN_VERSION=2.08
srcdir = @srcdir@
top_srcdir = @top_srcdir@
@@ -32,9 +32,19 @@
.c.o:
$(CC) -c $(ALL_CFLAGS) $< -o $@
-OBJS= pwgen.o pw_phonemes.o pw_rand.o randnum.o sha1.o sha1num.o
-
-SRCS= pwgen.c pw_phonemes.c pw_rand.c randnum.c sha1.c sha1num.c
+OBJS= pwgen.o \
+ pw_phonemes.o \
+ pw_rand.o \
+ randnum.o \
+ sha1.o \
+ sha1num.o
+
+SRCS= $(srcdir)/pwgen.c \
+ $(srcdir)/pw_phonemes.c \
+ $(srcdir)/pw_rand.c \
+ $(srcdir)/randnum.c \
+ $(srcdir)/sha1.c \
+ $(srcdir)/sha1num.c
pwgen: $(OBJS)
@@ -66,6 +76,7 @@
-o -name TAGS -o -name \*.old -o -name \*.gmo \
-o -name config.log -o -name config.cache \
-o -name config.status -o -name Makefile \
+ -o -name build -o -name autom4te.cache \
-o -name changed-files -o -name .#\* \) \
-print) | sed -e "s/^./$$a/" > $(srcdir)/.exclude-file
echo "$(SRCROOT)/.exclude-file" >> $(srcdir)/.exclude-file
@@ -87,7 +98,7 @@
Makefile: $(srcdir)/Makefile.in $(DEP_MAKEFILE) $(top_builddir)/config.status
cd $(top_builddir); CONFIG_FILES=$(my_dir)/Makefile ./config.status
-$(top_srcdir)/configure: $(top_srcdir)/configure.in
+$(top_srcdir)/configure: $(top_srcdir)/configure.ac
cd $(top_srcdir) && autoconf
#
@@ -123,9 +134,9 @@
# Makefile dependencies follow. This must be the last section in
# the Makefile.in file
#
-pwgen.o: pwgen.c pwgen.h
-pw_phonemes.o: pw_phonemes.c pwgen.h
-pw_rand.o: pw_rand.c pwgen.h
-randnum.o: randnum.c pwgen.h
-sha1.o: sha1.c sha1.h
-sha1num.o: sha1num.c sha1.h pwgen.h
+pwgen.o: $(srcdir)/pwgen.c $(srcdir)/pwgen.h
+pw_phonemes.o: $(srcdir)/pw_phonemes.c $(srcdir)/pwgen.h
+pw_rand.o: $(srcdir)/pw_rand.c $(srcdir)/pwgen.h
+randnum.o: $(srcdir)/randnum.c $(srcdir)/pwgen.h
+sha1.o: $(srcdir)/sha1.c $(srcdir)/sha1.h
+sha1num.o: $(srcdir)/sha1num.c $(srcdir)/pwgen.h $(srcdir)/sha1.h
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/configure new/pwgen-2.08/configure
--- old/pwgen-2.07/configure 2014-10-28 04:39:41.000000000 +0100
+++ new/pwgen-2.08/configure 2017-08-07 06:56:30.000000000 +0200
@@ -657,6 +657,7 @@
docdir
oldincludedir
includedir
+runstatedir
localstatedir
sharedstatedir
sysconfdir
@@ -727,6 +728,7 @@
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}'
@@ -979,6 +981,15 @@
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
+ -runstatedir | --runstatedir | --runstatedi | --runstated \
+ | --runstate | --runstat | --runsta | --runst | --runs \
+ | --run | --ru | --r)
+ ac_prev=runstatedir ;;
+ -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+ | --run=* | --ru=* | --r=*)
+ runstatedir=$ac_optarg ;;
+
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1116,7 +1127,7 @@
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
- libdir localedir mandir
+ libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@@ -1269,6 +1280,7 @@
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/configure.ac new/pwgen-2.08/configure.ac
--- old/pwgen-2.07/configure.ac 1970-01-01 01:00:00.000000000 +0100
+++ new/pwgen-2.08/configure.ac 2017-08-07 06:36:54.000000000 +0200
@@ -0,0 +1,11 @@
+AC_INIT(pwgen.c)
+AC_PREREQ(2.50)
+AC_PROG_CC
+AC_PROG_INSTALL
+AC_PATH_PROG(MV, mv, mv)
+AC_PATH_PROG(RM, rm, rm)
+AC_PATH_PROG(SED, sed, sed)
+AC_PATH_PROG(PERL, perl, perl)
+AC_CHECK_FUNCS(getopt_long)
+AC_CHECK_HEADERS(getopt.h)
+AC_OUTPUT(Makefile)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/configure.in new/pwgen-2.08/configure.in
--- old/pwgen-2.07/configure.in 2014-10-28 04:39:37.000000000 +0100
+++ new/pwgen-2.08/configure.in 1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-AC_INIT(pwgen.c)
-AC_PREREQ(2.50)
-AC_PROG_CC
-AC_PROG_INSTALL
-AC_PATH_PROG(MV, mv, mv)
-AC_PATH_PROG(RM, rm, rm)
-AC_PATH_PROG(SED, sed, sed)
-AC_PATH_PROG(PERL, perl, perl)
-AC_CHECK_FUNCS(getopt_long)
-AC_CHECK_HEADERS(getopt.h)
-AC_OUTPUT(Makefile)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/debian/changelog new/pwgen-2.08/debian/changelog
--- old/pwgen-2.07/debian/changelog 2014-10-28 04:31:07.000000000 +0100
+++ new/pwgen-2.08/debian/changelog 2017-08-07 06:53:46.000000000 +0200
@@ -1,3 +1,29 @@
+pwgen (2.08-1) unstable; urgency=medium
+
+ * New upstream version
+ * Suppress trailing space after the last password (Closes: #794635)
+ * Make pwgen -s more "secure" for 1 and 2 character passwords
+ (Closes: #666725)
+ * Fix option parsing of "pwgen --no-capitalize --no-vowels" (Closes: #791908)
+ * Add new option --remove-chars which removes chars from the set of
+ characters used to generate passwords (Closes: #836334)
+ * Add cross-compilation to debian/rules (Closes: #695148)
+ * Update control and copyright files to point at pwgen at github for
+ the home directory and primary git repository
+ (Closes: #454500, #855495, #846517)
+ * Update Debian policy compliance to 4.0.0
+
+ -- Theodore Y. Ts'o Mon, 07 Aug 2017 00:51:45 -0400
+
+pwgen (2.07-1.1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * Add multiarch metadata (Closes: #693964)
+ * Fix manpage typo (Closes: #579178)
+ * Stop -s from overwriting other flags (Closes: #436912)
+
+ -- Wookey Thu, 22 Oct 2015 22:14:04 +0100
+
pwgen (2.07-1) unstable; urgency=high
* New upstream version
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/debian/compat new/pwgen-2.08/debian/compat
--- old/pwgen-2.07/debian/compat 2014-10-28 04:11:30.000000000 +0100
+++ new/pwgen-2.08/debian/compat 2017-08-07 06:36:54.000000000 +0200
@@ -1 +1 @@
-8
+10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/debian/control new/pwgen-2.08/debian/control
--- old/pwgen-2.07/debian/control 2014-10-28 04:11:30.000000000 +0100
+++ new/pwgen-2.08/debian/control 2017-08-07 06:36:54.000000000 +0200
@@ -1,12 +1,16 @@
Source: pwgen
Section: admin
Priority: optional
-Build-Depends: debhelper (>= 8)
+Build-Depends: debhelper (>= 10)
Maintainer: Theodore Y. Ts'o
-Standards-Version: 3.9.6.0
+Standards-Version: 4.0.0
+Homepage: https://github.com/tytso/pwgen
+Vcs-Browser: https://github.com/tytso/pwgen
+Vcs-Git: https://github.com/tytso/pwgen.git
Package: pwgen
Architecture: any
+Multi-Arch: foreign
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Automatic Password generation
pwgen generates random, meaningless but pronounceable passwords.
@@ -17,6 +21,7 @@
Package: pwgen-udeb
Architecture: any
+Multi-Arch: foreign
Depends: ${shlibs:Depends}, ${misc:Depends}
Section: debian-installer
XC-Package-Type: udeb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/debian/copyright new/pwgen-2.08/debian/copyright
--- old/pwgen-2.07/debian/copyright 2014-10-28 04:12:04.000000000 +0100
+++ new/pwgen-2.08/debian/copyright 2017-08-07 06:36:54.000000000 +0200
@@ -1,7 +1,7 @@
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: pwgen
Upstream-Contact: tytso@mit.edu
-Source: http://sourceforge.net/projects/pwgen/files/pwgen/
+Source: https://github.com/tytso/pwgen
Files: *
Copyright: 2001, 2002, 2005, 2006, 2014 Theodore Ts'o
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/debian/rules new/pwgen-2.08/debian/rules
--- old/pwgen-2.07/debian/rules 2014-10-28 04:35:28.000000000 +0100
+++ new/pwgen-2.08/debian/rules 2017-08-07 06:36:54.000000000 +0200
@@ -2,6 +2,8 @@
# Made with the aid of debmake, by Christoph Lameter,
# based on the sample debian/rules file for GNU hello by Ian Jackson.
+DEB_BUILD_GNU_TYPE=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+DEB_HOST_GNU_TYPE=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
CPPFLAGS:=$(shell dpkg-buildflags --get CPPFLAGS)
CFLAGS:=$(shell dpkg-buildflags --get CFLAGS)
CXXFLAGS:=$(shell dpkg-buildflags --get CXXFLAGS)
@@ -15,7 +17,8 @@
build-stamp:
dh_testdir
- ./configure --prefix=/usr --mandir=/usr/share/man
+ ./configure --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) \
+ --prefix=/usr --mandir=/usr/share/man
$(MAKE) CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
touch build-stamp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/pw_phonemes.c new/pwgen-2.08/pw_phonemes.c
--- old/pwgen-2.07/pw_phonemes.c 2014-10-28 02:45:54.000000000 +0100
+++ new/pwgen-2.08/pw_phonemes.c 2017-08-07 06:36:54.000000000 +0200
@@ -56,7 +56,7 @@
#define NUM_ELEMENTS (sizeof(elements) / sizeof (struct pw_element))
-void pw_phonemes(char *buf, int size, int pw_flags)
+void pw_phonemes(char *buf, int size, int pw_flags, char *remove)
{
int c, i, len, flags, feature_flags;
int prev, should_be, first;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/pw_rand.c new/pwgen-2.08/pw_rand.c
--- old/pwgen-2.07/pw_rand.c 2007-07-05 01:14:26.000000000 +0200
+++ new/pwgen-2.08/pw_rand.c 2017-08-07 06:36:54.000000000 +0200
@@ -20,7 +20,32 @@
const char *pw_ambiguous = "B8G6I1l0OQDS5Z2";
const char *pw_vowels = "01aeiouyAEIOUY";
-void pw_rand(char *buf, int size, int pw_flags)
+static void remove_chars(char *buf, const char *remove)
+{
+ const char *cp;
+
+ if (!remove)
+ return;
+ for (cp = remove; *cp; cp++) {
+ char *r = strchr(buf, *cp);
+
+ if (r == NULL)
+ continue;
+ memmove(r, r+1, strlen(r));
+ }
+}
+
+static int find_chars(char *buf, const char *set)
+{
+ const char *cp;
+
+ for (cp = set; *cp; cp++)
+ if (strchr(buf, *cp))
+ return 1;
+ return 0;
+}
+
+void pw_rand(char *buf, int size, int pw_flags, char *remove)
{
char ch, *chars, *wchars;
int i, len, feature_flags;
@@ -55,9 +80,40 @@
if (pw_flags & PW_SYMBOLS) {
strcpy(wchars, pw_symbols);
}
-try_again:
+ if (remove) {
+ if (pw_flags & PW_AMBIGUOUS)
+ remove_chars(chars, pw_ambiguous);
+ if (pw_flags & PW_NO_VOWELS)
+ remove_chars(chars, pw_vowels);
+ remove_chars(chars, remove);
+ if ((pw_flags & PW_DIGITS) &&
+ !find_chars(chars, pw_digits)) {
+ fprintf(stderr,
+ "Error: No digits left in the valid set\n");
+ exit(1);
+ }
+ if ((pw_flags & PW_UPPERS) &&
+ !find_chars(chars, pw_uppers)) {
+ fprintf(stderr,
+ "Error: No upper case letters left in "
+ "the valid set\n");
+ exit(1);
+ }
+ if ((pw_flags & PW_SYMBOLS) &&
+ !find_chars(chars, pw_symbols)) {
+ fprintf(stderr,
+ "Error: No symbols left in the valid set\n");
+ exit(1);
+ }
+ if (chars[0] == '\0') {
+ fprintf(stderr,
+ "Error: No characters left in the valid set\n");
+ exit(1);
+ }
+ }
len = strlen(chars);
- feature_flags = pw_flags;
+try_again:
+ feature_flags = (size > 2) ? pw_flags : 0;
i = 0;
while (i < size) {
ch = chars[pw_number(len)];
@@ -66,11 +122,14 @@
if ((pw_flags & PW_NO_VOWELS) && strchr(pw_vowels, ch))
continue;
buf[i++] = ch;
- if (strchr(pw_digits, ch))
+ if ((feature_flags & PW_DIGITS) &&
+ strchr(pw_digits, ch))
feature_flags &= ~PW_DIGITS;
- if (strchr(pw_uppers, ch))
+ if ((feature_flags & PW_UPPERS) &&
+ strchr(pw_uppers, ch))
feature_flags &= ~PW_UPPERS;
- if (strchr(pw_symbols, ch))
+ if ((feature_flags & PW_SYMBOLS) &&
+ strchr(pw_symbols, ch))
feature_flags &= ~PW_SYMBOLS;
}
if (feature_flags & (PW_UPPERS | PW_DIGITS | PW_SYMBOLS))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/pwgen.1 new/pwgen-2.08/pwgen.1
--- old/pwgen-2.07/pwgen.1 2014-10-28 02:00:39.000000000 +0100
+++ new/pwgen-2.08/pwgen.1 2017-08-07 06:53:04.000000000 +0200
@@ -1,4 +1,4 @@
-.TH PWGEN 1 "January 2006" "pwgen version 2.05"
+.TH PWGEN 1 "August 2017" "pwgen version 2.08"
.SH NAME
pwgen \- generate pronounceable passwords
.SH SYNOPSIS
@@ -78,7 +78,7 @@
Generate
.I num
passwords. This defaults to a screenful if passwords are
-printed by columns, and one password.
+printed by columns, and one password otherwise.
.TP
.B \-n, --numerals
Include at least one number in the password. This is the default
@@ -101,6 +101,11 @@
.B \-h, --help
Print a help message.
.TP
+.B \-r \fIchars\fR, \fB--remove-chars=\fIchars
+Don't use the specified characters in password. This option will
+disable the phomeme-based generator and uses the random password
+generator.
+.TP
.B \-s, --secure
Generate completely random, hard-to-memorize passwords. These should
only be used for machine passwords, since otherwise it's almost
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/pwgen.c new/pwgen-2.08/pwgen.c
--- old/pwgen-2.07/pwgen.c 2014-10-28 02:00:39.000000000 +0100
+++ new/pwgen-2.08/pwgen.c 2017-08-07 06:36:54.000000000 +0200
@@ -35,6 +35,7 @@
{ "numerals", no_argument, 0, 'n'},
{ "symbols", no_argument, 0, 'y'},
{ "num-passwords", required_argument, 0, 'N'},
+ { "remove-chars", required_argument, 0, 'r' },
{ "secure", no_argument, 0, 's' },
{ "help", no_argument, 0, 'h'},
{ "no-numerals", no_argument, 0, '0' },
@@ -46,7 +47,7 @@
};
#endif
-const char *pw_options = "01AaBCcnN:shH:vy";
+const char *pw_options = "01AaBCcnN:sr:hH:vy";
static void usage(void)
{
@@ -66,6 +67,9 @@
fputs(" -y or --symbols\n", stderr);
fputs("\tInclude at least one special symbol in the password\n",
stderr);
+ fputs(" -r <chars> or --remove-chars=<chars>\n", stderr);
+ fputs("\tRemove characters from the set of characters to "
+ "generate passwords\n", stderr);
fputs(" -s or --secure\n", stderr);
fputs("\tGenerate completely random passwords\n", stderr);
fputs(" -B or --ambiguous\n", stderr);
@@ -92,7 +96,8 @@
int c, i;
int num_cols = -1;
char *buf, *tmp;
- void (*pwgen)(char *inbuf, int size, int pw_flags);
+ char *remove=NULL;
+ void (*pwgen)(char *inbuf, int size, int pw_flags, char *remove);
pwgen = pw_phonemes;
pw_number = pw_random_number;
@@ -137,7 +142,6 @@
break;
case 's':
pwgen = pw_rand;
- pwgen_flags = PW_DIGITS | PW_UPPERS;
break;
case 'C':
do_columns = 1;
@@ -154,7 +158,11 @@
break;
case 'v':
pwgen = pw_rand;
- pwgen_flags |= PW_NO_VOWELS | PW_DIGITS | PW_UPPERS;
+ pwgen_flags |= PW_NO_VOWELS;
+ break;
+ case 'r':
+ remove = strdup(optarg);
+ pwgen = pw_rand;
break;
case 'h':
case '?':
@@ -166,10 +174,12 @@
pw_length = strtol(argv[optind], &tmp, 0);
if (pw_length < 5)
pwgen = pw_rand;
- if (pw_length <= 2)
- pwgen_flags &= ~PW_UPPERS;
- if (pw_length <= 1)
- pwgen_flags &= ~PW_DIGITS;
+ if (pwgen != pw_rand) {
+ if (pw_length <= 2)
+ pwgen_flags &= ~PW_UPPERS;
+ if (pw_length <= 1)
+ pwgen_flags &= ~PW_DIGITS;
+ }
if (*tmp) {
fprintf(stderr, "Invalid password length: %s\n",
argv[optind]);
@@ -201,14 +211,13 @@
exit(1);
}
for (i=0; i < num_pw; i++) {
- pwgen(buf, pw_length, pwgen_flags);
- if (!do_columns || ((i % num_cols) == (num_cols-1)))
+ pwgen(buf, pw_length, pwgen_flags, remove);
+ if (!do_columns || ((i % num_cols) == (num_cols-1)) ||
+ (i == (num_pw - 1)))
printf("%s\n", buf);
else
printf("%s ", buf);
}
- if ((num_cols > 1) && ((i % num_cols) != 0))
- fputc('\n', stdout);
free(buf);
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/pwgen.h new/pwgen-2.08/pwgen.h
--- old/pwgen-2.07/pwgen.h 2007-07-05 01:14:26.000000000 +0200
+++ new/pwgen-2.08/pwgen.h 2017-08-07 06:36:54.000000000 +0200
@@ -38,10 +38,10 @@
/* Function prototypes */
/* pw_phonemes.c */
-extern void pw_phonemes(char *buf, int size, int pw_flags);
+extern void pw_phonemes(char *buf, int size, int pw_flags, char *remove);
/* pw_rand.c */
-extern void pw_rand(char *buf, int size, int pw_flags);
+extern void pw_rand(char *buf, int size, int pw_flags, char *remove);
/* randnum.c */
extern int pw_random_number(int max_num);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/randnum.c new/pwgen-2.08/randnum.c
--- old/pwgen-2.07/randnum.c 2014-10-28 02:55:43.000000000 +0100
+++ new/pwgen-2.08/randnum.c 2017-08-07 06:36:54.000000000 +0200
@@ -46,13 +46,12 @@
int pw_random_number(max_num)
int max_num;
{
- int i, fd = get_random_fd();
- int lose_counter = 0, nbytes;
unsigned int rand_num;
+ int i, fd = get_random_fd();
+ int lose_counter = 0, nbytes = sizeof(rand_num);
char *cp = (char *) &rand_num;
if (fd >= 0) {
- nbytes = sizeof(rand_num);
while (nbytes > 0) {
i = read(fd, cp, nbytes);
if ((i < 0) &&
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/sha1num.c new/pwgen-2.08/sha1num.c
--- old/pwgen-2.07/sha1num.c 2007-07-04 23:39:35.000000000 +0200
+++ new/pwgen-2.08/sha1num.c 2017-08-07 06:36:29.000000000 +0200
@@ -54,6 +54,8 @@
sha1_update( &sha1_ctx, buf, i );
}
+ fclose(f);
+
return;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pwgen-2.07/wordwrap.pl new/pwgen-2.08/wordwrap.pl
--- old/pwgen-2.07/wordwrap.pl 2007-07-04 23:39:35.000000000 +0200
+++ new/pwgen-2.08/wordwrap.pl 2017-08-07 06:36:54.000000000 +0200
@@ -9,8 +9,8 @@
}
next if (/^$/); # skip blank lines
$linelen = 0;
- split;
- while (defined($word = shift @_)) {
+ @words = split;
+ while (defined($word = shift @words)) {
$word =~ s#\$\(srcdir\)/\.\./version.h#\$\(top_srcdir\)/version.h#;
$word =~ s#\$\(srcdir\)/.\.\/\.\./version.h#\$\(top_srcdir\)/version.h#;
$word =~ s#\$\(srcdir\)/.\.\/et/com_err.h#\$\(top_srcdir\)/lib/et/com_err.h#;