John Darrington [Thu, 23 May 2019 05:33:55 +0000 (07:33 +0200)]
Matrix Data: Identify splits explicitly instead of with hashes.
The MATRIX DATA command was using hashes to identify splits in the
input. This works most of the time, but it is not guaranteed that
every combination of split values will produce a unique hash.
This change explicitly compares the values instead.
John Darrington [Tue, 21 May 2019 12:30:46 +0000 (14:30 +0200)]
Add the WARN_UNUSED_RESULT attribute to all hash functions.
A hash function has no purpose if the result is unused, and
tests will typically not pick up a mistake where the
programmer forgets to assign the result - the hash table will
merely degenerate to a linear searched array.
When calculating the values for a categorical barchart displaying
percentages, use the sub-category totals as the denominator, rather
than the primary totals.
John Darrington [Wed, 1 May 2019 06:44:10 +0000 (08:44 +0200)]
crosstabs.q: Replace 'Approx Sig.' with 'Approx. Sig.'
Not only is this a orthographical improvement, but it is also consistent
with other strings in this file and elsewhere, and avoids gratuitiously
adding an extra string for translators to deal with.
John Darrington [Sun, 28 Apr 2019 13:09:02 +0000 (15:09 +0200)]
src/output/driver.c: Change engine_stack from an array to a list.
The structure called engine_stack was formerly implemented as a heap
based array allocated with realloc. However when realloc moves data
it makes only shallow copies and does not copy referand of pointers.
This was causing crashes under certain circumstances.
Rather than trying to fix this, this change re-implements engine_stack
using the linked list structure from ll.h
Ryan Schmidt [Mon, 3 Dec 2018 18:10:41 +0000 (12:10 -0600)]
perl-module: Use unquoted perl config ld value
Fixes build failure when the perl config ld value contains multiple
words, such as on PowerPC Mac OS X where it may be a value like
'env MACOSX_DEPLOYMENT_TARGET=10.3 /usr/bin/gcc-4.2'.
Ben Pfaff [Thu, 28 Feb 2019 04:11:06 +0000 (20:11 -0800)]
sys-file-writer: Remove assertions based on file position.
These assertions can fail if the underlying file is not a regular file,
e.g. if it is a device such as /dev/null.
CVE-2019-9211.
See also https://bugzilla.redhat.com/show_bug.cgi?id=1683499.
See also https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-9211.
See also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=923417.
Ben Pfaff [Sat, 23 Feb 2019 01:16:40 +0000 (17:16 -0800)]
pspp-dump-sav; Fix write past end of buffer in corner case.
If count == 0 and size > 0, then n_bytes is 0, buffer is a 1-byte
allocation, and the assignment to buffer[size] would write to buffer[1]
(or past it), which is past the end of the allocation.
Ben Pfaff [Sat, 12 Jan 2019 20:14:36 +0000 (12:14 -0800)]
encrypted-file: Extend magic numbers in try_password().
The three-byte magic numbers would match 1 in about every 16 million
guessed passwords, which is too frequent for exhaustive testing. The new
7- and 10-byte magic numbers should not have the same problem.
Ben Pfaff [Sun, 13 Jan 2019 00:41:25 +0000 (16:41 -0800)]
str: Fix bugs in ds_put_c_vformat().
This code used c_vasnprintf() as if it had the same interface as
vsnprintf(), but it's quite different. It is necessary to make note of its
return value and possibly free it. The code previously here didn't do
that, which led to memory leaks and possibly worse problems. (Fortunately
this function isn't used much.)
Ben Pfaff [Wed, 2 Jan 2019 22:46:11 +0000 (14:46 -0800)]
matrix-data: Only use as many bytes as necessary to initialize string.
Using strncpy() of a 9-character string to initialize an 8-byte field is
odd and seems likely to have been a mistake, although a harmless one.
This makes the situation seem less odd.
Ben Pfaff [Wed, 2 Jan 2019 22:22:24 +0000 (14:22 -0800)]
pivot-table: Fix type mismatch in equal_indexes().
This function was being called with an 'unsigned int *' but it took it
as a 'size_t *', which worked fine on 32-bit systems but caused an
enormous number of tests to fail on 64-bit systems.
Thanks to Alan Mead and John Darrington for assistance.
Ben Pfaff [Wed, 2 Jan 2019 17:20:51 +0000 (09:20 -0800)]
configure: Entirely avoid broken Texinfo.
Texinfo 4.13 was still causing problems on SuSE despite the implemented
workarounds, so this commit removes the workaround in favor of just using
the distributed pspp.xml if makeinfo is broken.
Requested by opensuse.lietuviu.kalba <opensuse.lietuviu.kalba@gmail.com>.
Ben Pfaff [Tue, 1 Jan 2019 19:12:36 +0000 (11:12 -0800)]
psppire-output-view: Add a little extra space to GtkLayout.
It can be difficult to see the bottom and right sides of the GtkLayout
because of the scroll bars that, on newer versions of GTK+ 3, seem to
actually overlap part of the content. Add a little extra space around
the output items to make it clearer.