mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-15 16:24:28 +08:00
tools: Limit width of fields in sscanf
In tools/btmgmt.c and tools/hex2hcd.c few sscanf does not limit width of fields. This could lead to static overflow and stack corruption. Found by Linux Verification Center (linuxtesting.org) with the SVACE static analysis tool.
This commit is contained in:
parent
497a0b220d
commit
1e664b9838
@ -5164,7 +5164,7 @@ static bool str2pattern(struct mgmt_adv_pattern *pattern, const char *str)
|
||||
char pattern_str[62] = { 0 };
|
||||
char tmp;
|
||||
|
||||
if (sscanf(str, "%2hhx%n:%2hhx%n:%s", &pattern->ad_type, &type_len,
|
||||
if (sscanf(str, "%2hhx%n:%2hhx%n:%61s", &pattern->ad_type, &type_len,
|
||||
&pattern->offset, &offset_end_pos, pattern_str) != 3)
|
||||
return false;
|
||||
|
||||
|
@ -248,7 +248,7 @@ static void ver_parse_file(const char *pathname)
|
||||
|
||||
memset(ver, 0, sizeof(*ver));
|
||||
|
||||
if (sscanf(pathname, "%[A-Z0-9]_%3c.%3c.%3c.%4c.%4c.hex",
|
||||
if (sscanf(pathname, "%19[A-Z0-9]_%3c.%3c.%3c.%4c.%4c.hex",
|
||||
ver->name, ver->major, ver->minor,
|
||||
ver->build, dummy1, dummy2) != 6) {
|
||||
printf("\t/* failed to parse %s */\n", pathname);
|
||||
|
Loading…
Reference in New Issue
Block a user