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.
This commit is contained in:
Kay Sievers 2013-10-22 03:27:38 +02:00
parent 40976028c6
commit 9bcbce4201
4 changed files with 12 additions and 12 deletions

View 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;

View 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:

View 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

View 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;