mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2025-12-31 15:50:13 +01:00
Bug 15393 - support allow_anonymous config variable
* bus/bus.c: Set allow_anonymous if specified from parser. * bus/config-parser.c: Parse it. * bus/config-parser-common.h: Declare it. Signed-off-by: Colin Walters <walters@verbum.org>
This commit is contained in:
parent
e61f13cf32
commit
07a4ad4b04
4 changed files with 37 additions and 1 deletions
|
|
@ -55,6 +55,7 @@ struct BusContext
|
|||
BusLimits limits;
|
||||
unsigned int fork : 1;
|
||||
unsigned int keep_umask : 1;
|
||||
unsigned int allow_anonymous : 1;
|
||||
};
|
||||
|
||||
static dbus_int32_t server_data_slot = -1;
|
||||
|
|
@ -189,6 +190,9 @@ new_connection_callback (DBusServer *server,
|
|||
dbus_connection_set_max_message_size (new_connection,
|
||||
context->limits.max_message_size);
|
||||
|
||||
dbus_connection_set_allow_anonymous (new_connection,
|
||||
context->allow_anonymous);
|
||||
|
||||
/* on OOM, we won't have ref'd the connection so it will die. */
|
||||
}
|
||||
|
||||
|
|
@ -386,6 +390,7 @@ process_config_first_time_only (BusContext *context,
|
|||
|
||||
context->fork = bus_config_parser_get_fork (parser);
|
||||
context->keep_umask = bus_config_parser_get_keep_umask (parser);
|
||||
context->allow_anonymous = bus_config_parser_get_allow_anonymous (parser);
|
||||
|
||||
_DBUS_ASSERT_ERROR_IS_CLEAR (error);
|
||||
retval = TRUE;
|
||||
|
|
|
|||
|
|
@ -118,6 +118,10 @@ bus_config_parser_element_name_to_type (const char *name)
|
|||
{
|
||||
return ELEMENT_KEEP_UMASK;
|
||||
}
|
||||
else if (strcmp (name, "allow_anonymous") == 0)
|
||||
{
|
||||
return ELEMENT_ALLOW_ANONYMOUS;
|
||||
}
|
||||
return ELEMENT_NONE;
|
||||
}
|
||||
|
||||
|
|
@ -168,6 +172,8 @@ bus_config_parser_element_type_to_name (ElementType type)
|
|||
return "associate";
|
||||
case ELEMENT_KEEP_UMASK:
|
||||
return "keep_umask";
|
||||
case ELEMENT_ALLOW_ANONYMOUS:
|
||||
return "allow_anonymous";
|
||||
}
|
||||
|
||||
_dbus_assert_not_reached ("bad element type");
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ typedef enum
|
|||
ELEMENT_ASSOCIATE,
|
||||
ELEMENT_STANDARD_SESSION_SERVICEDIRS,
|
||||
ELEMENT_STANDARD_SYSTEM_SERVICEDIRS,
|
||||
ELEMENT_KEEP_UMASK
|
||||
ELEMENT_KEEP_UMASK,
|
||||
ELEMENT_ALLOW_ANONYMOUS
|
||||
} ElementType;
|
||||
|
||||
ElementType bus_config_parser_element_name_to_type (const char *element_name);
|
||||
|
|
|
|||
|
|
@ -114,6 +114,8 @@ struct BusConfigParser
|
|||
unsigned int keep_umask : 1; /**< TRUE to keep original umask when forking */
|
||||
|
||||
unsigned int is_toplevel : 1; /**< FALSE if we are a sub-config-file inside another one */
|
||||
|
||||
unsigned int allow_anonymous : 1; /**< TRUE to allow anonymous connections */
|
||||
};
|
||||
|
||||
static Element*
|
||||
|
|
@ -835,6 +837,20 @@ start_busconfig_child (BusConfigParser *parser,
|
|||
|
||||
return TRUE;
|
||||
}
|
||||
else if (element_type == ELEMENT_ALLOW_ANONYMOUS)
|
||||
{
|
||||
if (!check_no_attributes (parser, "allow_anonymous", attribute_names, attribute_values, error))
|
||||
return FALSE;
|
||||
|
||||
if (push_element (parser, ELEMENT_ALLOW_ANONYMOUS) == NULL)
|
||||
{
|
||||
BUS_SET_OOM (error);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
parser->allow_anonymous = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
else if (element_type == ELEMENT_SERVICEDIR)
|
||||
{
|
||||
if (!check_no_attributes (parser, "servicedir", attribute_names, attribute_values, error))
|
||||
|
|
@ -1972,6 +1988,7 @@ bus_config_parser_end_element (BusConfigParser *parser,
|
|||
case ELEMENT_ASSOCIATE:
|
||||
case ELEMENT_STANDARD_SESSION_SERVICEDIRS:
|
||||
case ELEMENT_STANDARD_SYSTEM_SERVICEDIRS:
|
||||
case ELEMENT_ALLOW_ANONYMOUS:
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -2256,6 +2273,7 @@ bus_config_parser_content (BusConfigParser *parser,
|
|||
case ELEMENT_KEEP_UMASK:
|
||||
case ELEMENT_STANDARD_SESSION_SERVICEDIRS:
|
||||
case ELEMENT_STANDARD_SYSTEM_SERVICEDIRS:
|
||||
case ELEMENT_ALLOW_ANONYMOUS:
|
||||
case ELEMENT_SELINUX:
|
||||
case ELEMENT_ASSOCIATE:
|
||||
if (all_whitespace (content))
|
||||
|
|
@ -2582,6 +2600,12 @@ bus_config_parser_get_keep_umask (BusConfigParser *parser)
|
|||
return parser->keep_umask;
|
||||
}
|
||||
|
||||
dbus_bool_t
|
||||
bus_config_parser_get_allow_anonymous (BusConfigParser *parser)
|
||||
{
|
||||
return parser->allow_anonymous;
|
||||
}
|
||||
|
||||
const char *
|
||||
bus_config_parser_get_pidfile (BusConfigParser *parser)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue