]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dbus-socket: move truncation check to bus_socket_set_transient_property()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 19 Dec 2017 06:30:59 +0000 (15:30 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 23 Dec 2017 10:32:23 +0000 (19:32 +0900)
src/core/dbus-socket.c
src/shared/bus-unit-util.c

index 26ab6b9ea503e134fda5d1d78b858b65664e3d55..e73ae9ddfa2f72ec11a44b50ce7086059dd559e4 100644 (file)
@@ -381,6 +381,9 @@ static int bus_socket_set_transient_property(
                 if (r < 0)
                         return r;
 
+                if ((uint64_t) (size_t) t != t)
+                        return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid %s: %" PRIu64, name, t);
+
                 if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
                         if (streq(name, "ReceiveBuffer"))
                                 s->receive_buffer = t;
index b9224bb23cf11d0d7bb87458dab3506d06bfe48e..92a7de83411044bb653d335c0ccc81fa229467ed 100644 (file)
@@ -241,12 +241,12 @@ static int bus_append_parse_sec_rename(sd_bus_message *m, const char *field, con
         return 1;
 }
 
-static int bus_append_parse_iec_size(sd_bus_message *m, const char *field, const char *eq) {
+static int bus_append_parse_size(sd_bus_message *m, const char *field, const char *eq, uint64_t base) {
         uint64_t v;
         int r;
 
-        r = parse_size(eq, 1024, &v);
-        if (r < 0 || (uint64_t) (size_t) v != v)
+        r = parse_size(eq, base, &v);
+        if (r < 0)
                 return log_error_errno(r, "Failed to parse %s=%s: %m", field, eq);
 
         r = sd_bus_message_append(m, "(sv)", field, "t", v);
@@ -1235,7 +1235,7 @@ static int bus_append_socket_property(sd_bus_message *m, const char *field, cons
 
         if (STR_IN_SET(field, "ReceiveBuffer", "SendBuffer", "PipeSize"))
 
-                return bus_append_parse_iec_size(m, field, eq);
+                return bus_append_parse_size(m, field, eq, 1024);
 
         if (STR_IN_SET(field, "ExecStartPre", "ExecStartPost", "ExecReload", "ExecStopPost"))