X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fnss-mymachines%2Fnss-mymachines.c;h=c87f436aea90c3de536caaedf4748f3149fa3a50;hp=09c5d05f2ecd98da008301013c1d434cf654c5de;hb=e70bc43cdf75b36e7ad3d29e9a6f8ee1461e7d5e;hpb=9d485985338a46b8cb1acdf1af6c1eb2e88acfee diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c index 09c5d05f2..c87f436ae 100644 --- a/src/nss-mymachines/nss-mymachines.c +++ b/src/nss-mymachines/nss-mymachines.c @@ -32,7 +32,7 @@ NSS_GETHOSTBYNAME_PROTOTYPES(mymachines); -static int count_addresses(sd_bus_message *m, unsigned af, unsigned *ret) { +static int count_addresses(sd_bus_message *m, int af, unsigned *ret) { unsigned c = 0; int r; @@ -40,9 +40,9 @@ static int count_addresses(sd_bus_message *m, unsigned af, unsigned *ret) { assert(ret); while ((r = sd_bus_message_enter_container(m, 'r', "yay")) > 0) { - unsigned char family; + int family; - r = sd_bus_message_read(m, "y", &family); + r = sd_bus_message_read(m, "i", &family); if (r < 0) return r; @@ -79,7 +79,7 @@ enum nss_status _nss_mymachines_gethostbyname4_r( struct gaih_addrtuple *r_tuple, *r_tuple_first = NULL; _cleanup_bus_message_unref_ sd_bus_message* reply = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; _cleanup_free_ int *ifindices = NULL; _cleanup_free_ char *class = NULL; size_t l, ms, idx; @@ -122,7 +122,7 @@ enum nss_status _nss_mymachines_gethostbyname4_r( if (r < 0) goto fail; - r = sd_bus_message_enter_container(reply, 'a', "(yay)"); + r = sd_bus_message_enter_container(reply, 'a', "(iay)"); if (r < 0) goto fail; @@ -151,12 +151,12 @@ enum nss_status _nss_mymachines_gethostbyname4_r( /* Second, append addresses */ r_tuple_first = (struct gaih_addrtuple*) (buffer + idx); - while ((r = sd_bus_message_enter_container(reply, 'r', "yay")) > 0) { - unsigned char family; + while ((r = sd_bus_message_enter_container(reply, 'r', "iay")) > 0) { + int family; const void *a; size_t sz; - r = sd_bus_message_read(reply, "y", &family); + r = sd_bus_message_read(reply, "i", &family); if (r < 0) goto fail; @@ -205,6 +205,11 @@ enum nss_status _nss_mymachines_gethostbyname4_r( if (ttlp) *ttlp = 0; + /* Explicitly reset all error variables */ + *errnop = 0; + *h_errnop = NETDB_SUCCESS; + h_errno = 0; + return NSS_STATUS_SUCCESS; fail: @@ -223,7 +228,7 @@ enum nss_status _nss_mymachines_gethostbyname3_r( char **canonp) { _cleanup_bus_message_unref_ sd_bus_message* reply = NULL; - _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_bus_close_unref_ sd_bus *bus = NULL; _cleanup_free_ char *class = NULL; unsigned c = 0, i = 0; char *r_name, *r_aliases, *r_addr, *r_addr_list; @@ -267,7 +272,7 @@ enum nss_status _nss_mymachines_gethostbyname3_r( if (r < 0) goto fail; - r = sd_bus_message_enter_container(reply, 'a', "(yay)"); + r = sd_bus_message_enter_container(reply, 'a', "(iay)"); if (r < 0) goto fail; @@ -307,12 +312,12 @@ enum nss_status _nss_mymachines_gethostbyname3_r( /* Third, append addresses */ r_addr = buffer + idx; - while ((r = sd_bus_message_enter_container(reply, 'r', "yay")) > 0) { - unsigned char family; + while ((r = sd_bus_message_enter_container(reply, 'r', "iay")) > 0) { + int family; const void *a; size_t sz; - r = sd_bus_message_read(reply, "y", &family); + r = sd_bus_message_read(reply, "i", &family); if (r < 0) goto fail; @@ -365,6 +370,11 @@ enum nss_status _nss_mymachines_gethostbyname3_r( if (canonp) *canonp = r_name; + /* Explicitly reset all error variables */ + *errnop = 0; + *h_errnop = NETDB_SUCCESS; + h_errno = 0; + return NSS_STATUS_SUCCESS; fail: