summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2013-10-22 03:27:38 +0200
committerKay Sievers <kay@vrfy.org>2013-10-22 03:35:45 +0200
commit9bcbce4201afada1c0ad8ada0cbfbbf58a52a6a7 (patch)
tree6711cfcec9e2d25dae74a3d04e9093e2cdfdcec0
parent40976028c6f24b9934e6c797ef6f5e123ac520d5 (diff)
bus: avoid 'bool' storage when retrieving 'b' from the message
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.
-rw-r--r--src/hostname/hostnamed.c6
-rw-r--r--src/libsystemd-bus/bus-message.c2
-rw-r--r--src/libsystemd-bus/bus-util.c4
-rw-r--r--src/timedate/timedated.c12
4 files changed, 12 insertions, 12 deletions
diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
index db0762140b..0854bc412f 100644
--- a/src/hostname/hostnamed.c
+++ b/src/hostname/hostnamed.c
@@ -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;
diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c
index 511bdf503e..cfc45a3f71 100644
--- a/src/libsystemd-bus/bus-message.c
+++ b/src/libsystemd-bus/bus-message.c
@@ -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:
diff --git a/src/libsystemd-bus/bus-util.c b/src/libsystemd-bus/bus-util.c
index c72610466d..42374fe16c 100644
--- a/src/libsystemd-bus/bus-util.c
+++ b/src/libsystemd-bus/bus-util.c
@@ -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
diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
index 2ead4b9999..809c80bad1 100644
--- a/src/timedate/timedated.c
+++ b/src/timedate/timedated.c
@@ -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;