diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2023-05-18 21:33:39 +0200 |
---|---|---|
committer | Mike Yuan <me@yhndnzj.com> | 2023-05-23 13:14:21 +0200 |
commit | 26a9dd6f55bb757e0033995cbb16bca12986b7cd (patch) | |
tree | f4744f2e6a180ac231c665e5d695e58fd52aaa5b /src/libsystemd/sd-bus | |
parent | update TODO (diff) | |
download | systemd-26a9dd6f55bb757e0033995cbb16bca12986b7cd.tar.xz systemd-26a9dd6f55bb757e0033995cbb16bca12986b7cd.zip |
sd-bus: refuse to send messages with an invalid string
Prompted by aaf7b0e41105d7b7cf30912cdac32820f011a219 and
4804da58536ab7ad46178a03f4d2da49fd8e4ba2.
Diffstat (limited to 'src/libsystemd/sd-bus')
-rw-r--r-- | src/libsystemd/sd-bus/bus-message.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c index 9719f97c02..e41ce9c1c1 100644 --- a/src/libsystemd/sd-bus/bus-message.c +++ b/src/libsystemd/sd-bus/bus-message.c @@ -1342,12 +1342,21 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void * into the empty string */ p = strempty(p); - _fallthrough_; + if (!utf8_is_valid(p)) + return -EINVAL; + + align = 4; + sz = 4 + strlen(p) + 1; + break; + case SD_BUS_TYPE_OBJECT_PATH: if (!p) return -EINVAL; + if (!object_path_is_valid(p)) + return -EINVAL; + align = 4; sz = 4 + strlen(p) + 1; break; @@ -1356,6 +1365,9 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void p = strempty(p); + if (!signature_is_valid(p, /* allow_dict_entry = */ true)) + return -EINVAL; + align = 1; sz = 1 + strlen(p) + 1; break; |