Commit Graph

37 Commits

Author SHA1 Message Date
Philip Withnall
7fd9f61dbd Avoid calling Standard C string/array functions with NULL arguments
glibc string.h declares memcpy() with attribute(nonnull(1,2)), causing
calls with NULL arguments to be treated as undefined behaviour.
This is consistent with ISO C99 and C11, which state that passing 0
to string functions as an array length does not remove the requirement
that the pointer to the array is a valid pointer.
gcc -fsanitize=undefined catches this while running OSTree's test suite.

Similarly, running the GLib test suite reports similar issues for
qsort(), memmove(), memcmp().

(This is a partial cherry-pick of commit e5ed410c8c from GLib.)

Signed-off-by: Simon McVittie <smcv@debian.org>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=775510
Reviewed-by: Colin Walters
2018-08-13 14:34:19 +01:00
Philip Withnall
355228121e doap: Update maintainers list to synchronise with GLib
GVDB is essentially part of GLib, so should have the same maintainer
list.

At least this way, it’s not just maintained by one absentee maintainer.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-08-13 14:29:51 +01:00
Ryan Lortie
2600082151 reader: embrace GBytes
Drop gvdb_table_new_from_data() and add gvdb_table_new_from_bytes().

Since the underlying backingstore of a GvdbTable is now always
refcounted, drop the refcounting on GvdbTable itself.
2012-11-09 13:19:13 -05:00
Ryan Lortie
fc37611a97 gvdb-reader: drop gvdb_table_walk()
The attempt at the simple method for preventing unbounded recursion
proved to be insufficient due to the existence of dconf databases in the
wild that violated the rule (leading to the entire content of the
database being scrapped).  It also still had the ugly assert for less
than 64 levels of recursion that could have been hit by a determined
advisary.

gvdb_table_get_names() allows the dconf-service to do everything it
needs without the troubles associated with the walk approach.
2012-07-09 15:28:17 -04:00
Ryan Lortie
d9577f100b gvdb-reader.c: add gvdb_table_get_names()
This function lists off all names that appear within a particular hash.
2012-07-09 14:32:22 -04:00
Ryan Lortie
82cbc59297 remove a stray variable
This was used to implement a much more complicated check which was
dismissed in favour of the simple 'must follow in file' approach.
2012-07-08 10:44:05 -04:00
Ryan Lortie
374cb1bc87 gvdb-reader: robustness improvements
Improve the robustness of gvdb-reader in two ways.

First: ensure that the result of gvdb_table_has_value() always agrees
with gvdb_table_get_value().  Those two could disagree in the case that
the value was recorded as existing but pointed to an out-of-bounds
region.

Second: prevent gvdb_table_walk() from getting stuck in finite loops due
to self-referential directories.
2012-07-06 21:42:04 -04:00
Ryan Lortie
a9551ccf92 more whitespace fixes 2012-07-05 23:14:55 -04:00
Ryan Lortie
ae3d42c60f gvdb-reader: refuse to open file with small header
Clean up the logic for dealing with invalid headers and include the case
where the file is too small to contain a fully-formed header.
2012-07-05 19:24:46 -04:00
Ryan Lortie
4e77b52ad8 gvdb-reader: correct whitespace damage 2012-07-05 19:13:58 -04:00
Colin Walters
7683c2b796 builder: Note don't actually implement bloom filters 2012-03-08 11:30:03 -05:00
Alexander Larsson
73acf01618 Support creating a GvdbReader from data
This is needed for the glib resource work.
2012-01-13 15:59:56 +01:00
Murray Cumming
d1f6300363 Docs: Changed can not to cannot.
This is a backport from the glib commit 30fdc1a799
2012-01-13 09:23:06 +01:00
Ryan Lortie
92652ac791 hashing: always use signed chars
Our hashing of non-ASCII strings was undefined due to the fact that
'char' is signed on some platforms, unsigned on others.  Always use a
signed char.

Discovered by Alexander Larsson.

https://bugzilla.gnome.org/show_bug.cgi?id=658806
2011-09-12 08:12:44 -04:00
Ryan Lortie
a5dd6fcc4f builder: do not include <unistd.h> on win32
Spotted by Kean Johnston <kean.johnston@gmail.com>.

https://mail.gnome.org/archives/gtk-devel-list/2011-April/msg00010.html
2011-04-15 09:27:38 -04:00
Ryan Lortie
3812559659 Remove unused variable in gvdb-reader
As originally committed against dconf by Owen.

Newer GCC flags this.
2011-02-03 17:26:51 -05:00
Ryan Lortie
03b6b9fb97 Mark a symbol as G_GNUC_INTERNAL 2011-01-25 18:26:21 -05:00
Ryan Lortie
a2918d6c3e Fix some harmless sign compare warnings 2011-01-17 15:19:14 -05:00
Ryan Lortie
ba5619ba7f C++ify the reader header 2011-01-17 15:15:46 -05:00
Ryan Lortie
92c22e7ca7 Fix some leaks in the GVDB builder 2010-12-15 11:36:14 -05:00
Ryan Lortie
814c0fcaaf Pass name_length to walk close function
For efficiency and safety.  This way we don't need to scan backwards for
the path separator (trusting that we will find it properly).
2010-12-07 01:36:09 -05:00
Ryan Lortie
e5e491c969 Add gvdb_table_get_raw_value() API for GSettings 2010-10-03 23:02:45 -04:00
Ryan Lortie
a35852bda3 Fix reader on big endian
Some of the hashtable code was failing to byteswap properly.
2010-10-03 21:10:35 -04:00
Ryan Lortie
d63f199d92 Fix is_valid() API
Actually dereference the pointer instead of just checking for NULL
2010-07-18 21:43:18 -04:00
Ryan Lortie
df40747190 Add gvdb_table_is_valid() API
Checks that the on-disk file is still valid.
2010-07-18 20:45:37 -04:00
Ryan Lortie
afea703422 Implement byteswapping in the reader 2010-06-10 15:27:46 -04:00
Ryan Lortie
9a8cba9eb5 drop "options" support 2010-06-10 13:34:56 -04:00
Ryan Lortie
5215d4b6d3 Add API for dconf's sake. 2010-04-28 12:39:02 -05:00
Ryan Lortie
daa1a73c75 Add a missing 'static' on internal functions 2010-04-22 15:45:47 -04:00
Ryan Lortie
291a5c9ed9 __value -> value to avoid stomping the C compiler 2010-04-20 20:12:41 -04:00
Ryan Lortie
2d9811ebda Don't write out zero-byte sections in builder
This and the previous issue caught by Christian Persch in bug #616156
2010-04-19 10:28:44 -04:00
Ryan Lortie
6713b3dbaa Whitespace fixups 2010-04-19 10:18:44 -04:00
Ryan Lortie
dc2b43b3e7 Fix logic error for missing options in reader 2010-04-19 10:17:31 -04:00
Ryan Lortie
caad55d726 Fix uninitialised header in the builder. 2010-04-16 11:04:15 -04:00
Ryan Lortie
3c10369bf6 Recommend git-merge(1) over git-submodule(1). 2010-04-15 22:12:45 -04:00
Ryan Lortie
3938c73547 Add a brief description to the .doap 2010-04-15 21:32:54 -04:00
Ryan Lortie
0fec2048f0 Initial commit 2010-04-15 21:26:34 -04:00