@@ -44,7 +44,7 @@ typedef bool (*l_cert_walk_cb_t)(struct l_cert *cert, void *user_data);
struct l_cert *l_cert_new_from_der(const uint8_t *buf, size_t buf_len);
void l_cert_free(struct l_cert *cert);
-DEFINE_CLEANUP_FUNC(l_cert_free);
+DEFINE_CLEANUP_FUNC(l_cert_free, struct l_cert *);
const uint8_t *l_cert_get_der_data(struct l_cert *cert, size_t *out_len);
const uint8_t *l_cert_get_dn(struct l_cert *cert, size_t *out_len);
@@ -54,7 +54,7 @@ enum l_cert_key_type l_cert_get_pubkey_type(struct l_cert *cert);
struct l_key *l_cert_get_pubkey(struct l_cert *cert);
void l_certchain_free(struct l_certchain *chain);
-DEFINE_CLEANUP_FUNC(l_certchain_free);
+DEFINE_CLEANUP_FUNC(l_certchain_free, struct l_certchain *);
struct l_cert *l_certchain_get_leaf(struct l_certchain *chain);
void l_certchain_walk_from_leaf(struct l_certchain *chain,
@@ -22,6 +22,6 @@
#pragma once
-#define DEFINE_CLEANUP_FUNC(func) \
+#define DEFINE_CLEANUP_FUNC(func, arg_type) \
inline __attribute__((always_inline)) \
- void func ## _cleanup(void *p) { func(*(void **) p); }
+ void func ## _cleanup(void *p) { func((arg_type)(*(void **) p)); }
@@ -73,7 +73,7 @@ bool l_ecc_point_y_isodd(const struct l_ecc_point *p);
ssize_t l_ecc_point_get_data(const struct l_ecc_point *p, void *buf, size_t len);
void l_ecc_point_free(struct l_ecc_point *p);
-DEFINE_CLEANUP_FUNC(l_ecc_point_free);
+DEFINE_CLEANUP_FUNC(l_ecc_point_free, struct l_ecc_point *);
struct l_ecc_scalar *l_ecc_scalar_new(const struct l_ecc_curve *curve,
const void *buf, size_t len);
@@ -87,7 +87,7 @@ struct l_ecc_scalar *l_ecc_scalar_new_reduced_1_to_n(
ssize_t l_ecc_scalar_get_data(const struct l_ecc_scalar *c, void *buf,
size_t len);
void l_ecc_scalar_free(struct l_ecc_scalar *c);
-DEFINE_CLEANUP_FUNC(l_ecc_scalar_free);
+DEFINE_CLEANUP_FUNC(l_ecc_scalar_free, struct l_ecc_scalar *);
/* Constant operations */
bool l_ecc_scalar_add(struct l_ecc_scalar *ret, const struct l_ecc_scalar *a,
@@ -59,7 +59,7 @@ bool l_icmp6_client_set_debug(struct l_icmp6_client *client,
l_icmp6_debug_cb_t function,
void *user_data, l_icmp6_destroy_cb_t destroy);
bool l_icmp6_client_set_address(struct l_icmp6_client *client,
- const uint8_t addr[static 6]);
+ const uint8_t addr[]);
bool l_icmp6_client_set_nodelay(struct l_icmp6_client *client, bool nodelay);
bool l_icmp6_client_set_rtnl(struct l_icmp6_client *client,
struct l_netlink *rtnl);
@@ -111,9 +111,9 @@ bool l_keyring_restrict(struct l_keyring *keyring, enum l_keyring_restriction re
const struct l_keyring *trust);
void l_keyring_free(struct l_keyring *keyring);
-DEFINE_CLEANUP_FUNC(l_keyring_free);
+DEFINE_CLEANUP_FUNC(l_keyring_free, struct l_keyring *);
void l_keyring_free_norevoke(struct l_keyring *keyring);
-DEFINE_CLEANUP_FUNC(l_keyring_free_norevoke);
+DEFINE_CLEANUP_FUNC(l_keyring_free_norevoke, struct l_keyring *);
bool l_keyring_link(struct l_keyring *keyring, const struct l_key *key);
@@ -41,7 +41,7 @@ typedef void (*l_rtnl_neighbor_get_cb_t) (int error, const uint8_t *hwaddr,
struct l_rtnl_address *l_rtnl_address_new(const char *ip, uint8_t prefix_len);
struct l_rtnl_address *l_rtnl_address_clone(const struct l_rtnl_address *orig);
void l_rtnl_address_free(struct l_rtnl_address *addr);
-DEFINE_CLEANUP_FUNC(l_rtnl_address_free);
+DEFINE_CLEANUP_FUNC(l_rtnl_address_free, struct l_rtnl_address *);
bool l_rtnl_address_get_address(const struct l_rtnl_address *addr,
char *out_buf);
const void *l_rtnl_address_get_in_addr(const struct l_rtnl_address *addr);
@@ -75,7 +75,7 @@ struct l_rtnl_route *l_rtnl_route_new_prefix(const char *ip,
struct l_rtnl_route *l_rtnl_route_new_static(const char *gw, const char *ip,
uint8_t prefix_len);
void l_rtnl_route_free(struct l_rtnl_route *rt);
-DEFINE_CLEANUP_FUNC(l_rtnl_route_free);
+DEFINE_CLEANUP_FUNC(l_rtnl_route_free, struct l_rtnl_route *);
uint8_t l_rtnl_route_get_family(const struct l_rtnl_route *rt);
bool l_rtnl_route_get_gateway(const struct l_rtnl_route *rt, char *out_buf);
const void *l_rtnl_route_get_gateway_in_addr(const struct l_rtnl_route *rt);
@@ -107,7 +107,7 @@ uint32_t l_rtnl_set_linkmode_and_operstate(struct l_netlink *rtnl, int ifindex,
l_netlink_destroy_func_t destroy);
uint32_t l_rtnl_set_mac(struct l_netlink *rtnl, int ifindex,
- const uint8_t addr[static 6],
+ const uint8_t addr[],
bool power_up,
l_netlink_command_func_t cb,
void *user_data,
@@ -40,7 +40,7 @@ struct l_settings *l_settings_new(void);
struct l_settings *l_settings_clone(const struct l_settings *settings);
void l_settings_free(struct l_settings *settings);
-DEFINE_CLEANUP_FUNC(l_settings_free);
+DEFINE_CLEANUP_FUNC(l_settings_free, struct l_settings *);
bool l_settings_load_from_data(struct l_settings *settings,
const char *data, size_t len);
@@ -34,7 +34,7 @@ struct l_string;
struct l_string *l_string_new(size_t initial_length);
void l_string_free(struct l_string *string);
-DEFINE_CLEANUP_FUNC(l_string_free);
+DEFINE_CLEANUP_FUNC(l_string_free, struct l_string *);
char *l_string_unwrap(struct l_string *string);
struct l_string *l_string_append(struct l_string *dest, const char *src);
@@ -38,7 +38,7 @@ char *l_strjoinv(char **str_array, const char delim);
char **l_strv_new(void);
void l_strv_free(char **str_array);
-DEFINE_CLEANUP_FUNC(l_strv_free);
+DEFINE_CLEANUP_FUNC(l_strv_free, char **);
unsigned int l_strv_length(char **str_array);
bool l_strv_contains(char **str_array, const char *item);
char **l_strv_append(char **str_array, const char *str);
@@ -39,7 +39,7 @@ struct l_uintset;
struct l_uintset *l_uintset_new_from_range(uint32_t min, uint32_t max);
struct l_uintset *l_uintset_new(unsigned int size);
void l_uintset_free(struct l_uintset *set);
-DEFINE_CLEANUP_FUNC(l_uintset_free);
+DEFINE_CLEANUP_FUNC(l_uintset_free, struct l_uintset *);
bool l_uintset_contains(struct l_uintset *set, uint32_t number);
bool l_uintset_take(struct l_uintset *set, uint32_t number);
@@ -236,7 +236,7 @@ void *l_malloc(size_t size) __attribute__ ((warn_unused_result, malloc));
void *l_memdup(const void *mem, size_t size)
__attribute__ ((warn_unused_result, malloc));
void l_free(void *ptr);
-DEFINE_CLEANUP_FUNC(l_free);
+DEFINE_CLEANUP_FUNC(l_free, void *);
void *l_realloc(void *mem, size_t size)
__attribute__ ((warn_unused_result, malloc));
@@ -365,8 +365,8 @@ const char *l_util_get_debugfs_path(void);
static inline int l_secure_memcmp(const void *a, const void *b,
size_t size)
{
- const volatile uint8_t *aa = a;
- const volatile uint8_t *bb = b;
+ const volatile uint8_t *aa = (const volatile uint8_t *)a;
+ const volatile uint8_t *bb = (const volatile uint8_t *)b;
int res = 0, diff, mask;
/*
@@ -417,9 +417,9 @@ static inline void l_secure_select(bool select_left,
const void *left, const void *right,
void *out, size_t len)
{
- const uint8_t *l = left;
- const uint8_t *r = right;
- uint8_t *o = out;
+ const uint8_t *l = (const uint8_t *)left;
+ const uint8_t *r = (const uint8_t *)right;
+ uint8_t *o = (uint8_t *)out;
uint8_t mask = -(!!select_left);
size_t i;