chiark / gitweb /
bus: avoid 'bool' storage when retrieving 'b' from the message
authorKay Sievers <kay@vrfy.org>
Tue, 22 Oct 2013 01:27:38 +0000 (03:27 +0200)
committerKay Sievers <kay@vrfy.org>
Tue, 22 Oct 2013 01:35:45 +0000 (03:35 +0200)
Just use an unsigned int as a bool type to avoid issues in the public
message reading API; sizeof(bool) == 1, but the code copies 4 bytes at
the pointers destination.

src/hostname/hostnamed.c
src/libsystemd-bus/bus-message.c
src/libsystemd-bus/bus-util.c
src/timedate/timedated.c

index db0762140b286405048c7b53e3c7562f2aafbdbe..0854bc412fc8d71326180ddd07f7dde0763dda87 100644 (file)
@@ -371,7 +371,7 @@ static int method_set_hostname(sd_bus *bus, sd_bus_message *m, void *userdata) {
         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
         Context *c = userdata;
         const char *name;
-        bool interactive;
+        unsigned interactive;
         char *h;
         int r;
 
@@ -421,7 +421,7 @@ static int method_set_static_hostname(sd_bus *bus, sd_bus_message *m, void *user
         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
         Context *c = userdata;
         const char *name;
-        bool interactive;
+        unsigned interactive;
         int r;
 
         r = sd_bus_message_read(m, "sb", &name, &interactive);
@@ -472,7 +472,7 @@ static int method_set_static_hostname(sd_bus *bus, sd_bus_message *m, void *user
 
 static int set_machine_info(Context *c, sd_bus *bus, sd_bus_message *m, int prop, sd_bus_message_handler_t cb) {
         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
-        bool interactive;
+        unsigned interactive;
         const char *name;
         int r;
 
index 511bdf503e78852430eccba3c49e8a0b8eebbfc2..cfc45a3f713aa5d46626bfe6e068df89b57eff65 100644 (file)
@@ -2741,7 +2741,7 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) {
                         break;
 
                 case SD_BUS_TYPE_BOOLEAN:
-                        *(int*) p = !!*(uint32_t*) q;
+                        *(unsigned*) p = !!*(uint32_t*) q;
                         break;
 
                 case SD_BUS_TYPE_INT16:
index c72610466dc4e9d1cd4b37e88042ba1174b2e929..42374fe16c201d5fa2388296b0c4d0b134cd53eb 100644 (file)
@@ -148,7 +148,7 @@ int bus_verify_polkit(
 #ifdef ENABLE_POLKIT
         else {
                 _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
-                bool authorized = false, challenge = false;
+                unsigned authorized = false, challenge = false;
 
                 r = sd_bus_call_method(
                                 bus,
@@ -267,7 +267,7 @@ int bus_verify_polkit_async(
 #ifdef ENABLE_POLKIT
         q = hashmap_remove(*registry, m);
         if (q) {
-                bool authorized, challenge;
+                unsigned authorized, challenge;
 
                 /* This is the second invocation of this function, and
                  * there's already a response from polkit, let's
index 2ead4b99993b91c44f099b0e25a52ee7d0bf8cf0..809c80bad11297acc1fdd6342f79d05f542fef97 100644 (file)
@@ -45,8 +45,8 @@
 typedef struct Context {
         char *zone;
         bool local_rtc;
-        int can_ntp;
-        int use_ntp;
+        unsigned can_ntp;
+        unsigned use_ntp;
         Hashmap *polkit_registry;
 } Context;
 
@@ -521,7 +521,7 @@ static int method_set_timezone(sd_bus *bus, sd_bus_message *m, void *userdata) {
         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
         Context *c = userdata;
         const char *z;
-        bool interactive;
+        unsigned interactive;
         char *t;
         int r;
 
@@ -585,7 +585,7 @@ static int method_set_timezone(sd_bus *bus, sd_bus_message *m, void *userdata) {
 
 static int method_set_local_rtc(sd_bus *bus, sd_bus_message *m, void *userdata) {
         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
-        bool lrtc, fix_system, interactive;
+        unsigned lrtc, fix_system, interactive;
         Context *c = userdata;
         struct timespec ts;
         int r;
@@ -669,7 +669,7 @@ static int method_set_local_rtc(sd_bus *bus, sd_bus_message *m, void *userdata)
 
 static int method_set_time(sd_bus *bus, sd_bus_message *m, void *userdata) {
         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
-        bool relative, interactive;
+        unsigned relative, interactive;
         Context *c = userdata;
         int64_t utc;
         struct timespec ts;
@@ -735,7 +735,7 @@ static int method_set_time(sd_bus *bus, sd_bus_message *m, void *userdata) {
 
 static int method_set_ntp(sd_bus *bus, sd_bus_message *m, void *userdata) {
         _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
-        bool ntp, interactive;
+        unsigned ntp, interactive;
         Context *c = userdata;
         int r;