bus: let magic ":no-sender" pass the validation

This commit is contained in:
Kay Sievers 2013-11-09 00:58:11 +01:00
parent 8159d91a9c
commit dbb642afae
4 changed files with 14 additions and 2 deletions

1
TODO
View File

@ -1,4 +1,5 @@
Bugfixes:
* check :no-sender logic after PID conversion
* enabling an instance unit creates a pointless link, and
the unit will be started with getty@getty.service:

View File

@ -166,6 +166,16 @@ bool service_name_is_valid(const char *p) {
return true;
}
bool sender_name_is_valid(const char *p) {
if (isempty(p))
return false;
if (streq(p, ":no-sender"))
return true;
return service_name_is_valid(p);
}
bool member_name_is_valid(const char *p) {
const char *q;

View File

@ -271,6 +271,7 @@ struct sd_bus {
bool interface_name_is_valid(const char *p);
bool service_name_is_valid(const char *p);
bool sender_name_is_valid(const char *p);
bool member_name_is_valid(const char *p);
bool object_path_is_valid(const char *p);
char *object_path_startswith(const char *a, const char *b);

View File

@ -3928,7 +3928,7 @@ int bus_message_parse_fields(sd_bus_message *m) {
if (!streq(signature, "s"))
return -EBADMSG;
r = message_peek_field_string(m, service_name_is_valid, &ri, &m->destination);
r = message_peek_field_string(m, sender_name_is_valid, &ri, &m->destination);
break;
case SD_BUS_MESSAGE_HEADER_SENDER:
@ -3939,7 +3939,7 @@ int bus_message_parse_fields(sd_bus_message *m) {
if (!streq(signature, "s"))
return -EBADMSG;
r = message_peek_field_string(m, service_name_is_valid, &ri, &m->sender);
r = message_peek_field_string(m, sender_name_is_valid, &ri, &m->sender);
break;