mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
bpf-6.11-rc7
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE+soXsSLHKoYyzcli6rmadz2vbToFAmbaYFMACgkQ6rmadz2v bTq7JBAAipwHeOL3IYproQxGy+f0W3Uik9FNlavSQ3zpJHmTJcpf0ysXkqH23g2q 26CF0R44gmGMkdbZsxbk3HLI2qRmzxmznYCDH0g7d9qwzQMhFHIiY7TW7UD/XbKx UHdHLb5PYrj+j94T1WGiQdvbZYDlpmdz5rFA9K/TBtBArqYp9mA4D/cIlTDBfFpk cjhSGVl9x/BKbiHKApxSGcR7Fh/+ux9mVdlssWQNhRfm3V2tbRSAw1i1/ydTG+4c bf/m0RSIDfPMxy1i7D0lNRbclzWVisTqNzDXHfQoRUJMuMDfsK4UZB/6gvh+2LKy D60vT8AfN5ygjJbLdFbwFGnEymjfsXWguyqfQB0d9Hj/2/EsZ01rI2ikJv9J+qKl wwZM3YeA3Q/V0mZ5wCONp2dn+s+82nga+fdvCRFz6SLkWQwgbW5BYHFF1c60V9MH Pbd9Y5VfCOEZRzR6RxbmguPrnoU1+BUwQeIAp9L73bllrzhtmh/aL/b03uw8/wUh I+peLxJ+DVp6wTudgvSMviMySWcztuz397G7TnFyG0V4nKe1+QxSaQWWw2HKvpy3 i+m98qoWqbuJqz49FpEtX6x/17gZZNA0LK648D77nrOfsGWOLTKOZUDbNWbTPw9a Gojg5obJ8P82yO9UCYQLyGsAJxJrKZv3OEmqy0mRG1hrSMsozxg= =5Quw -----END PGP SIGNATURE----- Merge tag 'bpf-6.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf Pull bpf fixes from Alexei Starovoitov: - Fix crash when btf_parse_base() returns an error (Martin Lau) - Fix out of bounds access in btf_name_valid_section() (Jeongjun Park) * tag 'bpf-6.11-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf: selftests/bpf: Add a selftest to check for incorrect names bpf: add check for invalid name in btf_name_valid_section() bpf: Fix a crash when btf_parse_base() returns an error pointer
This commit is contained in:
commit
b831f83e40
@ -823,9 +823,11 @@ static bool btf_name_valid_section(const struct btf *btf, u32 offset)
|
|||||||
const char *src = btf_str_by_offset(btf, offset);
|
const char *src = btf_str_by_offset(btf, offset);
|
||||||
const char *src_limit;
|
const char *src_limit;
|
||||||
|
|
||||||
|
if (!*src)
|
||||||
|
return false;
|
||||||
|
|
||||||
/* set a limit on identifier length */
|
/* set a limit on identifier length */
|
||||||
src_limit = src + KSYM_NAME_LEN;
|
src_limit = src + KSYM_NAME_LEN;
|
||||||
src++;
|
|
||||||
while (*src && src < src_limit) {
|
while (*src && src < src_limit) {
|
||||||
if (!isprint(*src))
|
if (!isprint(*src))
|
||||||
return false;
|
return false;
|
||||||
@ -6283,7 +6285,7 @@ static struct btf *btf_parse_module(const char *module_name, const void *data,
|
|||||||
|
|
||||||
errout:
|
errout:
|
||||||
btf_verifier_env_free(env);
|
btf_verifier_env_free(env);
|
||||||
if (base_btf != vmlinux_btf)
|
if (!IS_ERR(base_btf) && base_btf != vmlinux_btf)
|
||||||
btf_free(base_btf);
|
btf_free(base_btf);
|
||||||
if (btf) {
|
if (btf) {
|
||||||
kvfree(btf->data);
|
kvfree(btf->data);
|
||||||
|
@ -3550,6 +3550,40 @@ static struct btf_raw_test raw_tests[] = {
|
|||||||
},
|
},
|
||||||
BTF_STR_SEC("\0x\0?.foo bar:buz"),
|
BTF_STR_SEC("\0x\0?.foo bar:buz"),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.descr = "datasec: name with non-printable first char not is ok",
|
||||||
|
.raw_types = {
|
||||||
|
/* int */
|
||||||
|
BTF_TYPE_INT_ENC(0, BTF_INT_SIGNED, 0, 32, 4), /* [1] */
|
||||||
|
/* VAR x */ /* [2] */
|
||||||
|
BTF_TYPE_ENC(1, BTF_INFO_ENC(BTF_KIND_VAR, 0, 0), 1),
|
||||||
|
BTF_VAR_STATIC,
|
||||||
|
/* DATASEC ?.data */ /* [3] */
|
||||||
|
BTF_TYPE_ENC(3, BTF_INFO_ENC(BTF_KIND_DATASEC, 0, 1), 4),
|
||||||
|
BTF_VAR_SECINFO_ENC(2, 0, 4),
|
||||||
|
BTF_END_RAW,
|
||||||
|
},
|
||||||
|
BTF_STR_SEC("\0x\0\7foo"),
|
||||||
|
.err_str = "Invalid name",
|
||||||
|
.btf_load_err = true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.descr = "datasec: name '\\0' is not ok",
|
||||||
|
.raw_types = {
|
||||||
|
/* int */
|
||||||
|
BTF_TYPE_INT_ENC(0, BTF_INT_SIGNED, 0, 32, 4), /* [1] */
|
||||||
|
/* VAR x */ /* [2] */
|
||||||
|
BTF_TYPE_ENC(1, BTF_INFO_ENC(BTF_KIND_VAR, 0, 0), 1),
|
||||||
|
BTF_VAR_STATIC,
|
||||||
|
/* DATASEC \0 */ /* [3] */
|
||||||
|
BTF_TYPE_ENC(3, BTF_INFO_ENC(BTF_KIND_DATASEC, 0, 1), 4),
|
||||||
|
BTF_VAR_SECINFO_ENC(2, 0, 4),
|
||||||
|
BTF_END_RAW,
|
||||||
|
},
|
||||||
|
BTF_STR_SEC("\0x\0"),
|
||||||
|
.err_str = "Invalid name",
|
||||||
|
.btf_load_err = true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.descr = "type name '?foo' is not ok",
|
.descr = "type name '?foo' is not ok",
|
||||||
.raw_types = {
|
.raw_types = {
|
||||||
|
Loading…
Reference in New Issue
Block a user