1240 Commits

Author SHA1 Message Date
Руслан Ижбулатов
4c038a27ff Check for /proc/self/cmdline
Instead of hardcoding /proc/self/cmdline use for __linux__ only,
do a configure-time test for it.

Specifically, this enables /proc/self/cmdline use on Cygwin.

The configure-time test is very primitive (just tests that the
file exists and that it's possible to read more than one byte from it),
relying on the testsuite for more extensive checks.

The test in the testsuite is modified to always run, even on platforms
where it isn't supposed to pass. If it fails there, the testing framework
skips it. If the test unexpectedly passes, that is reported too.
2019-04-03 15:17:34 +00:00
Emmanuel Fleury
e9f57495c6 Fix various signedness warnings in glib/ghash.c
To conform to a better signedness schema, this patch change
GHashTable.size field from gint to gsize (and change accordingly the
tests with it).
2019-03-17 19:05:35 +01:00
Philip Withnall
c561870359 Merge branch 'pattern-coalesce' into 'master'
gvariant-parser: Fix pattern coalesce of M and *

See merge request GNOME/glib!694
2019-03-15 12:31:03 +00:00
Руслан Ижбулатов
8f27aa9965 glib: update internal gnulib from upstream
https://bugzilla.gnome.org/show_bug.cgi?id=795569

Related to issue #1371.
2019-03-13 12:38:42 +00:00
Philip Withnall
df62731771 Merge branch 'win32-symlink-refactoring' into 'master'
Win32 symlink code refactoring

See merge request GNOME/glib!269
2019-03-13 11:55:27 +00:00
Philip Withnall
57a806b762 tests: Convert g_assert() to g_assert_*() in glib/tests/rand.c
g_assert_*() give more informative failure messages, and aren’t compiled
out when building with G_DISABLE_ASSERT.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-03-08 19:46:21 +00:00
Philip Withnall
ba84f45f96 tests: Convert g_assert() to g_assert_*() in glib/tests/mappedfile.c
g_assert_*() give more informative failure messages, and aren’t compiled
out when building with G_DISABLE_ASSERT.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-03-08 19:46:20 +00:00
Philip Withnall
a1aebf7437 tests: Convert g_assert() to g_assert_*() in glib/tests/mainloop.c
g_assert_*() give more informative failure messages, and aren’t compiled
out when building with G_DISABLE_ASSERT.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-03-08 19:46:20 +00:00
Philip Withnall
3a96e7d9cb tests: Convert g_assert() to g_assert_*() in glib/tests/asyncqueue.c
g_assert_*() give more informative failure messages, and aren’t compiled
out when building with G_DISABLE_ASSERT.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-03-08 19:46:20 +00:00
Philip Withnall
d89f18bb22 build: Add -UG_DISABLE_ASSERT when building tests
In order to allow GLib itself to be built with G_DISABLE_ASSERT defined,
we need to explicitly undefine it when building the tests, otherwise
g_test_init() turns into an abort.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #1708
2019-03-08 19:46:20 +00:00
Руслан Ижбулатов
66f4c104ba W32 VEH: Add tests
One test is for _g_win32_subst_pid_and_event().
Two tests for crashing with different exceptions (access violation
and illegal instruction).
And one test for running a debugger.
2019-03-06 11:41:58 +00:00
Philip Withnall
387e762879 tests: Add base64 tests from §(Test Vectors) of RFC 4648
While I’m here, we might as well check that we output what the RFC says
we should output.

https://tools.ietf.org/html/rfc4648#section-10

(We do.)

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-02-27 10:45:02 +00:00
Philip Withnall
ff76f6920e gbase64: Allow g_base64_encode (NULL, 0) and g_base64_decode ("", *)
Relax a precondition in g_base64_encode_step() to allow this. It’s valid
to base64 encode an empty string, as per RFC 4648.

Similarly for g_base64_decode(), although calling it with a NULL string
has never been allowed. Instead, clarify the case of calling it with an
empty string.

This includes a unit test.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #1698
2019-02-27 10:44:14 +00:00
Tomasz Miąsko
153f63d13e gvariant-parser: Fix pattern coalesce of M and *
Previously pattern_coalesce incorrectly concluded that maybe type is not
present when one pattern starts with `M` and other pattern with anything
else than `M` or `m`. This is false when the other pattern is `*`, since
it includes the maybe type.
2019-02-26 17:27:49 +01:00
Philip Withnall
5c97cf666d Merge branch 'ossfuzz-11578-variant-text-type-detection' into 'master'
gvariant-parser: Fix error handling when type coalescing fails

See merge request GNOME/glib!639
2019-02-26 14:19:08 +00:00
Philip Withnall
29bde32b98 Merge branch 'ossfuzz-12686-variant-parse-negative-ints' into 'master'
gvariant-parser: Fix parsing of G_MININT* values in GVariant text format

See merge request GNOME/glib!638
2019-02-13 16:39:52 +00:00
Philip Withnall
c5c9b29b9d Merge branch 'w32-testsuite-fixes-general' into 'master'
General fixes to W32 test suite

Closes #875

See merge request GNOME/glib!665
2019-02-13 10:40:11 +00:00
Iain Lane
07a1a8031d
installed tests: Allow tests to set environment variables
It's necessary sometimes for installed tests to be able to run with a
custom environment. For example, the gsocketclient-slow test requires an
LD_PRELOADed library to provide a slow connect() (this is to be added in
a followup commit).

Introduce a variable `@env@` into the installed test template, which we
can override as necessary when generating `.test` files, to run tests
prefixed with `/usr/bin/env <LIST OF VARIABLES>`.

As the only test that requires this currently lives in `gio/tests/`, we
are only hooking this up for that directory right now. If other tests in
future require this treatment, then the support can be extended at that
point.
2019-02-13 09:43:49 +00:00
Руслан Ижбулатов
fb37239b20 testsuite: use binary mode for stdout on Windows
It's much easier than adjusting the test logic to account for the extra \r.
2019-02-13 08:49:42 +00:00
Philip Withnall
c927c59a84 gvariant-parser: Fix error handling when type coalescing fails
When parsing GVariant text format strings, we do a limited form of type
inference. The algorithm for type inference for nested array child types
is not complete, however (and making it complete, at least with a naive
implementation, would make it O(N^2), which is not worth it) and so some
text format arrays were triggering an assertion failure in the error
handling code.

Fix that by making the error handling code a little more relaxed, in the
knowledge that our type inference algorithm is not complete. See the
comment added to the code.

This includes a test case, provided by oss-fuzz.

oss-fuzz#11578

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-02-05 15:50:15 +00:00
Philip Withnall
0fcd5ac89d gvariant-parser: Fix parsing of G_MININT* values in GVariant text format
And add tests.

There wasn’t actually a bug on x86_64 before, but it was making use of
undefined behaviour, and hence triggering ubsan warnings. Make the code
more explicit, and avoid undefined behaviour.

oss-fuzz#12686

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-02-05 15:02:49 +00:00
Philip Withnall
f2d51adc13 Merge branch 'fix-protocol-test-win32' into 'master'
Use win32 io channel on windows for the protocol test

See merge request GNOME/glib!613
2019-02-05 11:31:36 +00:00
Mohammed Sadiq
2934dfa2bd gmarkup: Optimize g_markup_escape_text() 2019-01-30 14:36:14 +00:00
Ignacio Casal Quinteiro
22b3a5ec00 Use win32 io channel on windows for the protocol test
We must use the platform specific method to create an IO channel
out of an fd. The test still does not work on Windows but
this is a step forward in the direction to make it work.
2019-01-24 21:24:44 +01:00
Philip Withnall
6a2cfde29f gtypes: Define signed integer minimum values in terms of maximum values
This is what limits.h does. It avoids a problem when compiling with MSVC
(in C++ mode) on Windows, whereby the 0x80000000 constant is interpreted
as unsigned, and *then* the unary minus is applied to it.

https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-2-c4146?view=vs-2017

Add a test which should hopefully catch problems with different
compilers’ interpretations of this in future.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://gitlab.gnome.org/GNOME/glib/issues/1663
2019-01-23 13:23:53 +00:00
Philip Withnall
b3efef5b6f build: Drop autotools support
So long, and thanks for everything. We’re a Meson-only shop now.

glib-2-58 will remain the last stable GLib release series which is
buildable using autotools.

We continue to install autoconf macros for autotools-using projects
which depend on GLib; they are stable API.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-01-15 15:11:43 +00:00
Philip Withnall
76af5dabb4 Merge branch '1625-unbreakable-space-needed-when-showing-size-of-folder-file' into 'master'
Resolve "Unbreakable space needed when showing size of folder/file"

Closes #1625

See merge request GNOME/glib!548
2019-01-10 11:27:04 +00:00
Philip Withnall
0d3fe5c350 Merge branch 'queue-clear' into 'master'
Add g_queue_clear_full API

Closes #1464

See merge request GNOME/glib!537
2019-01-08 16:01:09 +00:00
Philip Withnall
33158c86c1 Merge branch 'wip/nacho/gpoll' into 'master'
win32 gpoll: overcome the 64 handles limit

See merge request GNOME/glib!535
2019-01-04 11:20:11 +00:00
Simon McVittie
986b0a5965 Merge branch '1055-will-the-alignment-never-end' into 'master'
gmacros: Don’t use __alignof__ in G_ALIGNOF implementation

Closes #1055

See merge request GNOME/glib!559
2019-01-03 09:42:52 +00:00
Ignacio Casal Quinteiro
7f1023b0b8 Use lowercase to include winsock2 2018-12-28 15:30:28 +01:00
Ignacio Casal Quinteiro
97f4ce5a77 meson: build gpoll test on windows 2018-12-28 14:41:53 +01:00
Ignacio Casal Quinteiro
a9ea169b64 win32: increase the fds and pollees on the gpoll test
Also change the repeat define to do a single pass so we do
not timeout
2018-12-28 13:28:43 +01:00
Vasily Galkin
387739b018 gspawn, tests: check passing special chars in args
The existing singlethread g_spawn_sync test is modified and now tests
that special characters in arguments are correctly passed to child.
The test is added before spawn escaping fixing on win32
and covers the case currently broken on win32:
'trailing \ in argument containing space'.
2018-12-26 23:30:57 +03:00
Tapasweni Pathak
2dc82840c8 Add g_queue_clear_full API
Closes https://gitlab.gnome.org/GNOME/glib/merge_requests/378.
2018-12-22 14:36:56 +05:30
Philip Withnall
ab56f0459c tests: Add test for G_ALIGNOF()
To guarantee that its behaviour is always the same as the
G_STRUCT_OFFSET fallback.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://gitlab.gnome.org/GNOME/glib/issues/1055
2018-12-21 13:22:55 +00:00
António Fernandes
3da40e9036 gutils: Use no-break space in g_format_size()
It's undesirable for quantity and unit to be separated by line breaks.

Fixes https://gitlab.gnome.org/GNOME/glib/issues/1625
2018-12-19 16:27:14 +00:00
Philip Withnall
a81aa3cb96 Merge branch 'rc-align' into 'master'
Align the reference counted allocations

Closes #1581

See merge request GNOME/glib!473
2018-12-19 12:30:57 +00:00
Kalev Lember
e7e40ba1cf tests: Update GMutexLocker tests
Spawn a thread and assert that the mutex actually got locked and then
unlocked again, same as we do in GRecMutexLocker tests.
2018-12-18 12:24:17 +01:00
Kalev Lember
8c2e71bba0 Add GRecMutexLocker
This is the same as GMutexLocker, just for recursive mutexes.
2018-12-18 12:24:17 +01:00
Emmanuele Bassi
f81723e675 Test the alignment of the refcounted box allocations
Check that the allocations are aligned regardless of the block size.
2018-12-18 11:18:43 +00:00
Ray Strode
3ab7a6544c spawn: add shebang line to script
downstream tools get confused when the script is missing a shebang
line, and having a shebang line doesn't hurt, so add one.
2018-12-17 16:19:31 -05:00
Philip Withnall
a67eadbdc3 gstrfuncs: Add g_strv_equal()
This is a utility function which I find myself writing in a number of
places. Mostly in unit tests.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-12-17 17:16:03 +00:00
Philip Withnall
d289ef449b tests: Port various tests to use g_assert_cmpvariant()
This should improve test error reporting a little.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-12-14 15:04:11 +00:00
Philip Withnall
ee364db967 gtestutils: Add g_assert_cmpvariant()
This is along the same lines as g_assert_cmpstr(), but for variants.

Based on a patch by Guillaume Desmottes.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://gitlab.gnome.org/GNOME/glib/issues/1191
2018-12-12 11:27:25 +00:00
Philip Withnall
b1f16259fc Merge branch 'issue-1605' into 'master'
gdatetime: Store intermediate result of g_date_time_format in UTF-8

Closes #1605

See merge request GNOME/glib!506
2018-12-10 12:03:17 +00:00
Tomasz Miąsko
e32342897a tests: Rename macro to avoid conflict with encoding prefix
Use macro name that doesn't conflict with string literal encoding prefix `U`.

```
../glib/tests/fileutils.c(282): warning C4133: 'function': incompatible types - from 'unsigned int [2]' to 'const gchar *'
../glib/tests/fileutils.c(284): warning C4133: 'function': incompatible types - from 'unsigned int [2]' to 'const gchar *'
../glib/tests/fileutils.c(285): warning C4133: 'function': incompatible types - from 'unsigned int [2]' to 'const gchar *'
../glib/tests/fileutils.c(286): warning C4133: 'function': incompatible types - from 'unsigned int [2]' to 'const gchar *'
../glib/tests/fileutils.c(287): warning C4133: 'function': incompatible types - from 'unsigned int [3]' to 'const gchar *'
...
```
2018-12-09 15:10:43 +01:00
Philip Withnall
d2224b475d gvariant: Fix error handling for parsing Unicode escapes
When parsing an escaped Unicode character in a text format GVariant
string, such as '\U0001F415', the code uses g_ascii_strtoull(). This,
unexpectedly, accepts minus signs, which can cause an assertion failure
when input like '\u-FF4' is presented for parsing.

Validate that there are no leading sign characters when parsing.

This shouldn’t be considered a security bug, because the GVariant text
format parser should not be used on untrusted input.

oss-fuzz#11576

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-12-04 12:55:21 +00:00
Philip Withnall
8d0a163000 gstrfuncs: Clarify that g_ascii_strtoull() accepts signed numbers
It’s perverse, but explicitly documented that strtoull() accepts numbers
with a leading minus sign (`-`) and explicitly casts them to signed
output.

g_ascii_strtoull() is documented to do what strtoull() does (but locale
independently), and its behaviour is correct. However, the documentation
could be a lot clearer about this unexpected behaviour.

Add a unit test for it too.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-12-04 12:51:09 +00:00
Tomasz Miąsko
8bfa45817e gdatetime: Avoid unnecessary conversions from ASCII to UTF-8 2018-12-04 13:34:33 +01:00