blobmsg: work around false positive gcc -Warray-bounds warnings
authorFelix Fietkau <nbd@nbd.name>
Sun, 15 May 2022 11:42:56 +0000 (13:42 +0200)
committerFelix Fietkau <nbd@nbd.name>
Sun, 15 May 2022 11:42:58 +0000 (13:42 +0200)
Using the return value of blobmsg_name as input argument to strcpy can lead
to warnings like these:

error: 'strcpy' offset 6 from the object at 'cur' is out of the bounds of referenced subobject 'name' with type 'uint8_t[]' {aka 'unsigned char[]'} at offset 6 [-Werror=array-bounds]

Fix this by replacing hdr->name with the equivalent hdr + 1

Signed-off-by: Felix Fietkau <nbd@nbd.name>
blobmsg.h

index 1f0634d8d066a54b999ee0368ba589299c50e8fe..5feaffe5e54f3341b0615b4e960f20244e1e8aba 100644 (file)
--- a/blobmsg.h
+++ b/blobmsg.h
@@ -62,7 +62,7 @@ static inline void blobmsg_clear_name(struct blob_attr *attr)
 static inline const char *blobmsg_name(const struct blob_attr *attr)
 {
        struct blobmsg_hdr *hdr = (struct blobmsg_hdr *) blob_data(attr);
-       return (const char *) hdr->name;
+       return (const char *)(hdr + 1);
 }
 
 static inline int blobmsg_type(const struct blob_attr *attr)