2008-01-17 Timo Hoenig <thoenig@suse.de>
* fix inotify support
* bus/dir-watch-inotify.c (_handle_inotify_watch): fix reading of the
inotify events. Also, use ssize_t not size_t for 'ret'.
* bus/dir-watch-inotify.c (bus_watch_directory): watch not only for
IN_MODIFY but also for IN_CREATE and IN_DELETE
* bus/dir-watch-inotify.c (bus_drop_all_directory_watches): drop the
inotify watches more elegantly by closing inotify:_fd, set inotify_fd to
-1 after dropping the watches
rewrite selinux error handling to not abort due to a NULL read
2008-01-15 John (J5) Palmieri <johnp@redhat.com>
* bus/bus.c (bus_context_check_security_policy): rewrite selinux error
handling to not abort due to a NULL read and to set the error only if
it is not already set (Based off of FDO Bug #12430)
* patch by Frederic Crozat <fcrozat at mandriva dot com> (FDO Bz#
13268)
* add inotify support
* bus/Makefile.am: add inotify module to the build
* bus/dir-watch-inotify.c: inotify module based off the dnotify and
kqueue modules
* configure.in: add checks and switch for inotify
also add a printout at the end of configure if inotify and kqueue
support is being built in (dnotify already had this)
* configure.in: add warning to output when libxml is selected since
we don't have a libxml maintainer and expat works perfectly fine
for what we need an xml parser for
add _dbus_geteuid to fix EXTERNAL authentication in setuid applications
2008-01-14 John (J5) Palmieri <johnp@redhat.com>
* Patch by Andrea Luzzardi <scox at sig11 dot org>: creates a
_dbus_geteuid function to fix EXTERNAL authentication in setuid
applications
* dbus/dbus-sysdeps-unix.c (_dbus_geteuid): used to get the effective
uid of the running program
(_dbus_credentials_add_from_current_process): use geteuid instead of
getuid
(_dbus_append_user_from_current_process): use geteuid instead of
getuid
* dbus/dbus-sysdeps-util-unix.c (_dbus_change_to_daemon_user): use
geteuid instead of getuid
(_dbus_unix_user_is_at_console): use geteuid instead of getuid
* dbus/dbus-sysdeps-win.c (_dbus_geteuid): add a windows equivilant
that returns DBUS_UID_UNSET
Sjoerd Simons [Fri, 23 Nov 2007 10:31:05 +0000 (11:31 +0100)]
Allow a normal session bus to be reused by applications using autolaunching
2007-11-23 Sjoerd Simons <sjoerd@luon.net>
* tools/dbus-launch.c: let both a normal dbus-launch and an
autolaunched bus save their parameters in X11 if possible. This makes
the autolaunch and non-autolaunch behaviour more similar. With the
exception that on a normal launch there will always be a new session
bus and not being able to save parameters is not fatal. This also
enables to launch programs directly with autolaunch (not very usefull
though).
Havoc Pennington [Wed, 31 Oct 2007 17:58:28 +0000 (13:58 -0400)]
Fix a problem where a nul byte was wrongly introduced into UUIDs, due to _dbus_string_copy_to_buffer weird behavior.
2007-10-31 Havoc Pennington <hp@redhat.com>
* bus/selinux.c (log_audit_callback): rewrite to use
_dbus_string_copy_to_buffer_with_nul()
* dbus/dbus-string.c (_dbus_string_copy_to_buffer): change to NOT
nul-terminate the buffer; fail an assertion if there is not enough
space in the target buffer. This fixes two bugs where
copy_to_buffer was used to copy the binary bytes in a UUID, where
nul termination did not make sense. Bug reported by David Castelow.
(_dbus_string_copy_to_buffer_with_nul): new function that always
nul-terminates the buffer, and fails an assertion if there is not
enough space in the buffer.
Havoc Pennington [Fri, 19 Oct 2007 19:05:27 +0000 (15:05 -0400)]
do not call audit_init() from bus/ directory from files in dbus/
2007-10-19 Havoc Pennington <hp@redhat.com>
* bus/bus.c (bus_context_new): put the audit_init() in here
instead, which I believe ends up being the same as where it was
before, though I'm not sure I understand why it goes here.
* dbus/dbus-sysdeps-util-unix.c (_dbus_change_to_daemon_user):
remove audit_init() from here, this file can't depend on code in
bus/ directory
Simon McVittie [Tue, 16 Oct 2007 09:13:15 +0000 (10:13 +0100)]
configure.in: *Actually* fix detection of i486 atomic ops.
My previous attempt at a fix would always enable them due to wrong quoting.
Patch from Colin Walters <walters@verbum.org>
Simon McVittie [Thu, 11 Oct 2007 09:27:28 +0000 (10:27 +0100)]
Enable Autoconf's AC_C_INLINE to avoid compilation failure with gcc -ansi.
If inline isn't recognised (e.g. on a strict C90 compiler, like gcc -ansi) this
defines it to __inline__, __inline or nothing, whichever works. This is safe,
because we never use inline except in combination with static.
Simon McVittie [Thu, 11 Oct 2007 08:57:48 +0000 (09:57 +0100)]
Fix detection of i486 atomic ops.
Previously, the attempts to determine support at compile-time on Darwin were
causing the i486 atomic ops to be used on *all* i386 or x86-64 GCC builds
(AH_VERBATIM can't be conditionalized like we were trying to).
Simon McVittie [Wed, 10 Oct 2007 10:59:14 +0000 (11:59 +0100)]
Bring .gitignore files up to date; add *.o, *~ etc. to top-level .gitignore
CVS ignores these automatically, so they weren't in the .cvsignore when Ryan
converted the repository.
fd.o bug #11678 Don't error out if compiler does not support vararg macros
* _dbus_verbose is the only function that does this so make it a noop if
vararg macros are not supported
* https://bugs.freedesktop.org/show_bug.cgi?id=11678
fd.o bug #12429 Reverse check to setpcap and only init audit if we were root
* patch by Dan Walsh <dwalsh@redhat.com>
* https://bugs.freedesktop.org/show_bug.cgi?id=12429
* Reverse we_were_root check to setpcap if we were root. Also only init
audit if we were root. So error dbus message will not show up when policy
reload happens. dbus -session will no longer try to send audit message,
only system will.
* For security reasons we want possition independent code for libraries
and possition independent executable for executables
* before we were just enabling -fPIC
* now we correctly enable -fPIC and -PIE for libdbus and the bus respectively
* propper LD_FLAGS are set for each also
Ryan Lortie [Thu, 20 Sep 2007 17:04:38 +0000 (13:04 -0400)]
Add argument path matching support. Bug #11066.
2007-09-20 Ryan Lortie <desrt@desrt.ca>
* dbus/signals.c (struct DBusMatchRule, bus_match_rule_new,
bus_match_rule_set_arg, bus_match_rule_parse_arg_match,
match_rule_matches): Add support for parsing and matching on
arg0path='/some/path' type rules.
* dbus/signals.h (bus_match_rule_set_arg): change to take const
DBusString instead of const char * for the string to match against.
* dbus/dbus-bus.c: add a quick note to dbus_bus_add_match
documentation about the path matching.
* doc/dbus-specification.xml: add a more detailed description of the
changes here.
Havoc Pennington [Fri, 17 Aug 2007 16:43:57 +0000 (16:43 +0000)]
2007-08-17 Havoc Pennington <hp@redhat.com>
* tools/dbus-launch-x11.c (set_address_in_x11): fix from Michael
Lorenz to use long not int with XChangeProperty format 32
* dbus/dbus-sysdeps-util-unix.c
(_dbus_write_pid_to_file_and_pipe): factor this out, and use the
same code in _dbus_become_daemon (where the parent writes the pid
file and to the pid pipe) and in bus_context_new (where the daemon
writes its own pid file and to its own pid pipe)
* bus/bus.c (bus_context_new): close the pid pipe after we print
to it. Also, don't write the pid to the pipe twice when we fork,
someone reported this bug a long time ago.
* configure.in: add major/minor/micro version number AC_SUBST
* dbus/dbus-arch-deps.h.in (DBUS_MAJOR_VERSION,
DBUS_MINOR_VERSION, DBUS_MICRO_VERSION, DBUS_VERSION_STRING,
DBUS_VERSION): collection of macros to get version of library we
are compiled against.
* dbus/dbus-misc.c (dbus_get_version): new function, to get
version of library we are linked against at runtime.
* bus/activation-helper.c (check_bus_name): don't use
_dbus_check_valid_bus_name() which is only around with
--enable-checks, instead use _dbus_validate_bus_name().
Bug #11766 from Diego <diego@pemas.net>
* bus/config-parser-trivial.c (check_return_values): disable a
test that hardcoded the bus user's name
* bus/dispatch.c (bus_dispatch_test_conf): remove the "if
(!use_launcher)" around the tests, they were only failing because
we didn't pass through all the expected errors from the helper.
* bus/activation-exit-codes.h
(BUS_SPAWN_EXIT_CODE_CHILD_SIGNALED): add a code for child segfaulting
(BUS_SPAWN_EXIT_CODE_GENERIC_FAILURE): make "1" be a generic
failure code, so if a third party launch helper were written it
could just always return 1 on failure.
* configure.in: add AM_PROG_CC_C_O to allow per-target CPPFLAGS
* bus/dispatch.c (bus_dispatch_test_conf): Fix up setting
TEST_LAUNCH_HELPER_CONFIG to include the full path, and enable
test shell_fail_service_auto_start when use_launcher==TRUE
* bus/activation-helper-bin.c (convert_error_to_exit_code): pass
through the INVALID_ARGS error so the test suite works
* bus/activation.c (handle_activation_exit_error): return
DBUS_ERROR_NO_MEMORY if we get BUS_SPAWN_EXIT_CODE_NO_MEMORY
* dbus/dbus-spawn.c (_dbus_babysitter_get_child_exit_status):
return only the exit code of the child, not the entire thingy from
waitpid(), and make the return value indicate whether the child
exited normally (with a status code)
* bus/bus.c (process_config_first_time_only): _dbus_strdup works
on NULL so no need to check
(process_config_every_time): move servicehelper init here, so we
reload it on HUP or config file change
* bus/Makefile.am (install-data-hook): remove comment because
Emacs make mode seems to be grumpy about it
Richard Hughes [Tue, 24 Jul 2007 13:03:31 +0000 (13:03 +0000)]
2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/Makefile.am:
* bus/test-system.c: (die), (check_memleaks), (test_pre_hook),
(test_post_hook), (main):
Add back the test-system.c file - not sure now this got ignored in the
diff. I blame git.
Richard Hughes [Tue, 24 Jul 2007 12:55:32 +0000 (12:55 +0000)]
2007-07-24 Richard Hughes <richard@hughsie.com>
* configure.in:
Use ustar to generate the tarball; this fixes the make distcheck
problem when the data files do not fit in the archive:
tar: dbus-1.1.2/test/data/valid-service-files/org.freedesktop.DBus.
TestSuiteShellEchoServiceFail.service.in: file name is too
long (max 99); not dumped
We have to have the 'long' names as the service helper matches by
filename rather than by the name in the service file.
Richard Hughes [Tue, 24 Jul 2007 12:39:30 +0000 (12:39 +0000)]
2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/dispatch.c: (check_segfault_service_no_auto_start),
(check_launch_service_file_missing),
(check_launch_service_user_missing),
(check_launch_service_exec_missing),
(check_launch_service_service_missing), (bus_dispatch_test_conf),
(bus_dispatch_test_conf_fail), (bus_dispatch_test):
Add unit tests for system activation. Most are copied from the
session activation tests, but some didn't apply when using a laucher.
Richard Hughes [Tue, 24 Jul 2007 12:19:59 +0000 (12:19 +0000)]
2007-07-24 Richard Hughes <richard@hughsie.com>
* bus/bus.c: (process_config_first_time_only),
(process_config_every_time), (bus_context_unref),
(bus_context_get_servicehelper):
* bus/bus.h:
Add the concept of a service-helper and allow it's value to be read.