mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-10-07 00:31:11 +00:00
all: fix various "-Wcast-align=strict" warnings
The warning "-Wcast-align=strict" seems useful and will be enabled next. Fix places that currently cause the warning by using the new macro NM_CAST_ALIGN(). This macro also nm_assert()s that the alignment is correct.
This commit is contained in:
parent
4ecd25a139
commit
36f8de25c4
|
@ -1010,8 +1010,9 @@ _network_server_get_bluez_manager(const NMBtVTableNetworkServer *vtable_network_
|
|||
{
|
||||
NMBluezManager *self;
|
||||
|
||||
self = (NMBluezManager *) (((char *) vtable_network_server)
|
||||
- G_STRUCT_OFFSET(NMBluezManager, _priv.vtable_network_server));
|
||||
self = NM_CAST_ALIGN(NMBluezManager,
|
||||
(((char *) vtable_network_server)
|
||||
- G_STRUCT_OFFSET(NMBluezManager, _priv.vtable_network_server)));
|
||||
|
||||
g_return_val_if_fail(NM_IS_BLUEZ_MANAGER(self), NULL);
|
||||
|
||||
|
|
|
@ -1077,7 +1077,7 @@ nm_dbus_manager_lookup_object(NMDBusManager *self, const char *path)
|
|||
if (!ptr)
|
||||
return NULL;
|
||||
|
||||
obj = (NMDBusObject *) (((char *) ptr) - G_STRUCT_OFFSET(NMDBusObject, internal));
|
||||
obj = NM_CAST_ALIGN(NMDBusObject, (((char *) ptr) - G_STRUCT_OFFSET(NMDBusObject, internal)));
|
||||
nm_assert(NM_IS_DBUS_OBJECT(obj));
|
||||
return obj;
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ nm_dbus_utils_get_paths_for_clist(const CList *lst_head,
|
|||
i = 0;
|
||||
strv = g_new(const char *, n + 1);
|
||||
c_list_for_each (iter, lst_head) {
|
||||
NMDBusObject *obj = (NMDBusObject *) (((const char *) iter) - member_offset);
|
||||
NMDBusObject *obj = NM_CAST_ALIGN(NMDBusObject, (((char *) iter) - member_offset));
|
||||
|
||||
path = nm_dbus_object_get_path(obj);
|
||||
if (!path) {
|
||||
|
|
|
@ -45,7 +45,7 @@ NM_IS_L3_IPV4LL(const NML3IPv4LL *self)
|
|||
{
|
||||
nm_assert(!self
|
||||
|| (NM_IS_L3CFG(*((NML3Cfg **) self))
|
||||
&& (*((int *) (((char *) self) + sizeof(gpointer)))) > 0));
|
||||
&& *(NM_CAST_ALIGN(int, (((char *) self) + sizeof(gpointer)))) > 0));
|
||||
return !!self;
|
||||
}
|
||||
|
||||
|
|
|
@ -108,9 +108,10 @@ _PRIV_TO_SELF(NMPolicyPrivate *priv)
|
|||
|
||||
nm_assert(priv);
|
||||
|
||||
self = (NMPolicy *) (((char *) priv) - G_STRUCT_OFFSET(NMPolicy, _priv));
|
||||
self = NM_CAST_ALIGN(NMPolicy, (((char *) priv) - G_STRUCT_OFFSET(NMPolicy, _priv)));
|
||||
|
||||
nm_assert(NM_IS_POLICY(self));
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
|
|
@ -68,7 +68,7 @@ NM_UTILS_LOOKUP_STR_DEFINE(nm_ppp_mgr_callback_type_to_string,
|
|||
#define SELF_TO_USERDATA(self) (&(self)->idle_start)
|
||||
|
||||
#define SELF_FROM_USERDATA(user_data) \
|
||||
((NMPppMgr *) (((const char *) (user_data)) - G_STRUCT_OFFSET(NMPppMgr, idle_start)))
|
||||
NM_CAST_ALIGN(NMPppMgr, (((char *) (user_data)) - G_STRUCT_OFFSET(NMPppMgr, idle_start)))
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
|
|
|
@ -1254,9 +1254,9 @@ nml_dbus_object_get_property_location(NMLDBusObject *dbobj,
|
|||
{
|
||||
char *target_c;
|
||||
|
||||
target_c = (char *) dbobj->nmobj;
|
||||
target_c = ((gpointer) dbobj->nmobj);
|
||||
if (meta_iface->base_struct_offset > 0)
|
||||
target_c = *((gpointer *) (&target_c[meta_iface->base_struct_offset]));
|
||||
target_c = *NM_CAST_ALIGN(gpointer, &target_c[meta_iface->base_struct_offset]);
|
||||
return &target_c[meta_property->prop_struct_offset];
|
||||
}
|
||||
|
||||
|
|
|
@ -43,10 +43,10 @@ _nm_object_get_private(NMObjectClass *klass, NMObject *self, guint16 extra_offse
|
|||
|
||||
nm_assert(klass->priv_ptr_offset > 0);
|
||||
|
||||
ptr = (char *) self;
|
||||
ptr = ((gpointer) self);
|
||||
ptr += klass->priv_ptr_offset;
|
||||
if (klass->priv_ptr_indirect)
|
||||
ptr = *((gpointer *) ptr);
|
||||
ptr = *NM_CAST_ALIGN(gpointer, ptr);
|
||||
return ptr + extra_offset;
|
||||
}
|
||||
|
||||
|
|
|
@ -6959,7 +6959,7 @@ test_setting_ip6_gateway(void)
|
|||
|
||||
gateway_bytes = g_variant_get_fixed_array(gateway_var, &length, 1);
|
||||
g_assert_cmpint(length, ==, 16);
|
||||
nmtst_assert_ip6_address((struct in6_addr *) gateway_bytes, "abcd::1");
|
||||
nmtst_assert_ip6_address(NM_CAST_ALIGN(struct in6_addr, gateway_bytes), "abcd::1");
|
||||
g_variant_unref(gateway_var);
|
||||
}
|
||||
g_variant_unref(value);
|
||||
|
|
|
@ -450,10 +450,17 @@ _nm_crypto_verify_pkcs12(const guint8 *data, gsize data_len, const char *passwor
|
|||
|
||||
#if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
{
|
||||
guint16 *p, *p_end;
|
||||
const guint16 *p_end;
|
||||
guint16 *p;
|
||||
|
||||
p_end = (guint16 *) &(((guint8 *) pw.data)[ucs2_password.len]);
|
||||
for (p = (guint16 *) pw.data; p < p_end; p++)
|
||||
/* we cast here to guint16 pointers (which would trigger a "-Wcast-align").
|
||||
* But this is safe, because ucs2_password.len is a multiple of 2 and
|
||||
* because pw.data was an allocated buffer (that is presumably aligned
|
||||
* correctly). */
|
||||
nm_assert(ucs2_password.len % 2 == 0);
|
||||
|
||||
p_end = NM_CAST_ALIGN(guint16, &(((guint8 *) pw.data)[ucs2_password.len]));
|
||||
for (p = NM_CAST_ALIGN(guint16, pw.data); p < p_end; p++)
|
||||
*p = GUINT16_SWAP_LE_BE(*p);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -106,7 +106,7 @@ nm_hash_static(guint static_seed)
|
|||
*
|
||||
* Also, ensure that we don't return zero (like for nm_hash_complete()).
|
||||
*/
|
||||
return ((*((const guint *) _get_hash_key())) ^ static_seed) ?: 3679500967u;
|
||||
return ((*NM_CAST_ALIGN(guint, _get_hash_key())) ^ static_seed) ?: 3679500967u;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1348,7 +1348,8 @@ typedef struct {
|
|||
};
|
||||
} ParseNlmsgIter;
|
||||
|
||||
#define NLMSG_TAIL(nmsg) ((struct rtattr *) (((char *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
|
||||
#define NLMSG_TAIL(nmsg) \
|
||||
NM_CAST_ALIGN(struct rtattr, ((char *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len))
|
||||
|
||||
/* copied from iproute2's addattr_l(). */
|
||||
static gboolean
|
||||
|
@ -9927,7 +9928,7 @@ continue_reading:
|
|||
goto stop;
|
||||
}
|
||||
|
||||
hdr = (struct nlmsghdr *) priv->netlink_recv_buf.buf;
|
||||
hdr = NM_CAST_ALIGN(struct nlmsghdr, priv->netlink_recv_buf.buf);
|
||||
while (nlmsg_ok(hdr, n)) {
|
||||
WaitForNlResponseResult seq_result;
|
||||
gboolean process_valid_msg = FALSE;
|
||||
|
|
|
@ -325,7 +325,8 @@ nlmsg_parse_error(const struct nlmsghdr *nlh, const char **out_extack_msg)
|
|||
struct nlattr *tb[G_N_ELEMENTS(policy)];
|
||||
struct nlattr *tlvs;
|
||||
|
||||
tlvs = (struct nlattr *) ((char *) e + sizeof(*e) + e->msg.nlmsg_len - NLMSG_HDRLEN);
|
||||
tlvs = NM_CAST_ALIGN(struct nlattr,
|
||||
(((char *) e) + sizeof(*e) + e->msg.nlmsg_len - NLMSG_HDRLEN));
|
||||
if (nla_parse_arr(tb, tlvs, nlh->nlmsg_len - sizeof(*e) - e->msg.nlmsg_len, policy) >= 0) {
|
||||
if (tb[NLMSGERR_ATTR_MSG])
|
||||
*out_extack_msg = nla_get_string(tb[NLMSGERR_ATTR_MSG]);
|
||||
|
@ -842,7 +843,7 @@ genlmsg_len(const struct genlmsghdr *gnlh)
|
|||
{
|
||||
const struct nlmsghdr *nlh;
|
||||
|
||||
nlh = (const struct nlmsghdr *) ((const unsigned char *) gnlh - NLMSG_HDRLEN);
|
||||
nlh = NM_CAST_ALIGN(const struct nlmsghdr, (((char *) gnlh) - NLMSG_HDRLEN));
|
||||
return (nlh->nlmsg_len - GENL_HDRLEN - NLMSG_HDRLEN);
|
||||
}
|
||||
|
||||
|
@ -1253,7 +1254,7 @@ continue_reading:
|
|||
if (n <= 0)
|
||||
return n;
|
||||
|
||||
hdr = (struct nlmsghdr *) buf;
|
||||
hdr = NM_CAST_ALIGN(struct nlmsghdr, buf);
|
||||
while (nlmsg_ok(hdr, n)) {
|
||||
nm_auto_nlmsg struct nl_msg *msg = NULL;
|
||||
|
||||
|
|
|
@ -340,7 +340,7 @@ nla_next(const struct nlattr *nla, int *remaining)
|
|||
int totlen = NLA_ALIGN(nla->nla_len);
|
||||
|
||||
*remaining -= totlen;
|
||||
return (struct nlattr *) ((char *) nla + totlen);
|
||||
return NM_CAST_ALIGN(struct nlattr, (((char *) nla) + totlen));
|
||||
}
|
||||
|
||||
#define nla_for_each_attr(pos, head, len, rem) \
|
||||
|
@ -434,7 +434,7 @@ nlmsg_next(struct nlmsghdr *nlh, int *remaining)
|
|||
|
||||
*remaining -= totlen;
|
||||
|
||||
return (struct nlmsghdr *) ((unsigned char *) nlh + totlen);
|
||||
return NM_CAST_ALIGN(struct nlmsghdr, (((char *) nlh) + totlen));
|
||||
}
|
||||
|
||||
int nlmsg_get_proto(struct nl_msg *msg);
|
||||
|
@ -493,8 +493,9 @@ nlmsg_attrlen(const struct nlmsghdr *nlh, int hdrlen)
|
|||
static inline struct nlattr *
|
||||
nlmsg_attrdata(const struct nlmsghdr *nlh, int hdrlen)
|
||||
{
|
||||
unsigned char *data = nlmsg_data(nlh);
|
||||
return (struct nlattr *) (data + NLMSG_ALIGN(hdrlen));
|
||||
char *data = nlmsg_data(nlh);
|
||||
|
||||
return NM_CAST_ALIGN(struct nlattr, (data + NLMSG_ALIGN(hdrlen)));
|
||||
}
|
||||
|
||||
static inline struct nlattr *
|
||||
|
|
|
@ -454,9 +454,12 @@ NMP_OBJECT_UP_CAST(const NMPlatformObject *plobj)
|
|||
{
|
||||
NMPObject *obj;
|
||||
|
||||
obj = plobj ? (NMPObject *) (&(((char *) plobj)[-((int) G_STRUCT_OFFSET(NMPObject, object))]))
|
||||
obj = plobj ? NM_CAST_ALIGN(NMPObject,
|
||||
&(((char *) plobj)[-((int) G_STRUCT_OFFSET(NMPObject, object))]))
|
||||
: NULL;
|
||||
|
||||
nm_assert(!obj || (obj->parent._ref_count > 0 && NMP_CLASS_IS_VALID(obj->_class)));
|
||||
|
||||
return obj;
|
||||
}
|
||||
#define NMP_OBJECT_UP_CAST(plobj) (NMP_OBJECT_UP_CAST((const NMPlatformObject *) (plobj)))
|
||||
|
|
|
@ -1116,7 +1116,7 @@ _print_fill(const NmcConfig *nmc_config,
|
|||
cell->text_to_free = TRUE;
|
||||
}
|
||||
if (to_free)
|
||||
g_strfreev((char **) to_free);
|
||||
g_strfreev(NM_CAST_ALIGN(char *, to_free));
|
||||
}
|
||||
} else {
|
||||
cell->text.plain = value;
|
||||
|
|
Loading…
Reference in a new issue