2004-11-07 Colin Walters <walters@verbum.org>
authorColin Walters <walters@verbum.org>
Sun, 7 Nov 2004 17:05:19 +0000 (17:05 +0000)
committerColin Walters <walters@verbum.org>
Sun, 7 Nov 2004 17:05:19 +0000 (17:05 +0000)
commitcdac3e058b922431f387351fd8ebf60a764485d1
treea92b8fa08c2657b6339d9590be5309ff627d1512
parenta14c43cf3ab7a2636146410e52be5e421fc0aaf9
2004-11-07  Colin Walters  <walters@verbum.org>

* bus/bus.c (load_config): Break into three
separate functions: process_config_first_time_only,
process_config_every_time, and process_config_postinit.
(process_config_every_time): Move call of
bus_registry_set_service_context_table into
process_config_postinit.
(process_config_postinit): New function, does
any processing that needs to happen late
in initialization (and also on reload).
(bus_context_new): Instead of calling load_config,
open config parser here and call process_config_first_time_only
and process_config_every_time directly.  Later, after
we have forked but before changing UID,
invoke bus_selinux_full_init, and then call
process_config_postinit.
(bus_context_reload_config): As in bus_context_new,
load parse file inside here, and call process_config_every_time
and process_config_postinit.

* bus/services.h, bus/services.c
(bus_registry_set_service_context_table): Rename
from bus_registry_set_sid_table.  Take string hash from config
parser, and convert them here into SIDs.

* bus/config-parser.c (struct BusConfigParser): Have
config parser only store a mapping of service->context
string.
(merge_service_context_hash): New function.
(merge_included): Merge context string hashes instead
of using bus_selinux_id_table_union.
(bus_config_parser_new): Don't use bus_selinux_id_table_new;
simply create a new string hash.
(bus_config_parser_unref): Unref it.
(start_selinux_child): Simply insert strings into hash,
don't call bus_selinux_id_table_copy_over.

* bus/selinux.h, bus/selinux.c (bus_selinux_id_table_union)
(bus_selinux_id_table_copy_over): Delete.
ChangeLog
bus/bus.c
bus/config-parser.c
bus/config-parser.h
bus/main.c
bus/selinux.c
bus/selinux.h
bus/services.c
bus/services.h