mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-11-28 12:21:05 +08:00
btf: Protect BTF_KIND_INFO against invalid kind
If the user provides a kind value that is more than 5 bits, the BTF_KIND_INFO macro would emit incorrect values for info (by clobbering values of the kind flag). Tested on x86_64-redhat-linux. include/ChangeLog: * btf.h (BTF_TYPE_INFO): Protect against user providing invalid kind. Signed-off-by: Will Hawkins <hawkinsw@obs.cr>
This commit is contained in:
parent
786ebbd605
commit
d0bc1cbf6a
@ -82,7 +82,7 @@ struct btf_type
|
||||
};
|
||||
};
|
||||
|
||||
/* The folloing macros access the information encoded in btf_type.info. */
|
||||
/* The following macros access the information encoded in btf_type.info. */
|
||||
/* Type kind. See below. */
|
||||
#define BTF_INFO_KIND(info) (((info) >> 24) & 0x1f)
|
||||
/* Number of entries of variable length data following certain type kinds.
|
||||
@ -95,7 +95,7 @@ struct btf_type
|
||||
|
||||
/* Encoding for struct btf_type.info. */
|
||||
#define BTF_TYPE_INFO(kind, kflag, vlen) \
|
||||
((((kflag) ? 1 : 0 ) << 31) | ((kind) << 24) | ((vlen) & 0xffff))
|
||||
((((kflag) ? 1 : 0 ) << 31) | ((kind & 0x1f) << 24) | ((vlen) & 0xffff))
|
||||
|
||||
#define BTF_KIND_UNKN 0 /* Unknown or invalid. */
|
||||
#define BTF_KIND_INT 1 /* Integer. */
|
||||
|
Loading…
Reference in New Issue
Block a user