summaryrefslogtreecommitdiffstats
path: root/src/libsystemd/sd-bus
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-05-18 21:33:39 +0200
committerMike Yuan <me@yhndnzj.com>2023-05-23 13:14:21 +0200
commit26a9dd6f55bb757e0033995cbb16bca12986b7cd (patch)
treef4744f2e6a180ac231c665e5d695e58fd52aaa5b /src/libsystemd/sd-bus
parentupdate TODO (diff)
downloadsystemd-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.c14
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;