Ben Pfaff [Sun, 27 Aug 2017 19:30:50 +0000 (12:30 -0700)]
sys-file-reader: Better handle duplicate names without long names.
The reader did not properly handle the case where variable short names
had duplicates and the system file did not include long names. In this
case, the reader still tried to use the (duplicate) short names as the
long names, which could in some cases cause a secondary name collision in
the no-long-names case in parse_long_var_names(), and assert-failed.
This commit first fixes the handling of duplicate short names: it sets
the long name to the unique chosen short name, instead of the original
duplicate short name. Then as an additional measure it refactors the code
a little to always handle duplicates in rename_var_and_save_short_names().
I am not sure that that is necessary but it's a little bit of a code
cleanup anyhow.
CVE-2017-12960.
See also https://bugzilla.redhat.com/show_bug.cgi?id=1482433.
See also http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-12960.
See also http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12960.
Found by team OWL337, using the collAFL fuzzer.
Ben Pfaff [Sun, 27 Aug 2017 19:30:30 +0000 (12:30 -0700)]
sys-file-reader: Fully verify multiple response set names.
Until now, the code only checked the first character of the name, which
made it possible to assert-fail when the mrset was actually added.
CVE-2017-12959.
See also https://bugzilla.redhat.com/show_bug.cgi?id=1482432.
See also http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-12959.
See also http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12959.
Found by team OWL337, using the collAFL fuzzer.
Ben Pfaff [Sun, 27 Aug 2017 19:32:50 +0000 (12:32 -0700)]
data-out: Pass correct width to value_str() in output_AHEX().
AHEX16 is short enough to work as a short string, but output_AHEX() was
treating it as a long string, which caused string data to be dereferenced
as a pointer.
CVE-2017-12958.
See also https://bugzilla.redhat.com/show_bug.cgi?id=1482429.
See also http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-12958.
See also http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-12958.
Found by team OWL337, using the collAFL fuzzer.
Ben Pfaff [Mon, 31 Jul 2017 13:52:53 +0000 (06:52 -0700)]
system-file-format: More string fields with null bytes spotted.
Manoharan <s.manoharan@auckland.ac.nz> reported that he has also seen
system files that contain string fields with compressed null bytes, so
reword the description to make this sound less exotic.
Ben Pfaff [Mon, 17 Jul 2017 04:07:33 +0000 (21:07 -0700)]
doc: Keep copyright and license comments from showing up in TeX output.
The "\input texinfo" line is what changes the comment syntax from TeX
syntax to Texinfo syntax, so it has to go before the @c comments or else
those comments show up in output produced by TeX.
Ben Pfaff [Sat, 15 Jul 2017 22:10:38 +0000 (15:10 -0700)]
Update to newest Gnulib.
Harry Thijssen reported an issue with the previous version on Windows.
John Darrington suggested an update, since the Gnulib developers have been
working through related problems.
Ben Pfaff [Tue, 4 Jul 2017 16:58:55 +0000 (12:58 -0400)]
sys-file-reader: Fix integer overflows in parse_long_string_missing_values().
Crafted system files caused integer overflow errors that in turn caused
aborts. This fixes the problem.
CVE-2017-10791.
See also https://bugzilla.redhat.com/show_bug.cgi?id=1467004.
See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=866890.
See also https://security-tracker.debian.org/tracker/CVE-2017-10791.
Found by team OWL337, using the collAFL fuzzer.
Ben Pfaff [Tue, 4 Jul 2017 16:54:47 +0000 (12:54 -0400)]
sys-file-reader: Avoid null dereference skipping bad extension record 18.
read_record() assumed that read_extension_record() never set its output
argument to NULL when it returned true, but this is possible in an error
case.
CVE-2017-10792.
See also https://bugzilla.redhat.com/show_bug.cgi?id=1467005.
See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=866890.
See also https://security-tracker.debian.org/tracker/CVE-2017-10792.
Reported by team OWL337, with fuzzer collAFL.
Ben Pfaff [Tue, 27 Jun 2017 21:52:40 +0000 (17:52 -0400)]
perl-module: Avoid VERSION redefinition warning from compiler.
If the PSPP version includes a suffix like "-pre1", then Perl will strip
that suffix from the version it passes to the compiler using -DVERSION=...,
and <config.h> will re-define it with the full version string. This causes
a warning.
This change avoids the warning. I am not yet aware of a new problem that
it causes.
Fixed perl regression problem due to Version name - Fixes Bug #51218
The regression failed in some perl tests due to an incompatible
pspp version number. I changed to a version number that includes
a "-". The problem is described in acinclude.m4. See
The PSPP autobuilder appends a build number to the PSPP version number,
e.g. "0.7.2-build40". But Perl won't parse version numbers that contain
anything other than digits and periods, so "-build" causes an error. So we
define $(VERSION_FOR_PERL) that drops everything from the hyphen onward.
VERSION_FOR_PERL=`echo "$VERSION" | sed 's/-.*//'`
AC_SUBST([VERSION_FOR_PERL])
The version name was 0.10.5pre1 without a "-". Therefore the version name
for perl results in a problem.
John Darrington [Wed, 10 May 2017 10:48:17 +0000 (12:48 +0200)]
FACTOR: Use consistent indexing when displaying matrices.
In any sane use case this will make no difference, since
all covariance and correlation matrices are symetrical.
However for correctness and ease of debugging this helps.