Skip to content

Commit 51860d6

Browse files
Malaya Kumar Routlenb
authored andcommitted
tools/power x86_energy_perf_policy: Fix potential NULL pointer dereference
In err_on_hypervisor(), strstr() is called to search for "flags" in the buffer, but the return value is not checked before being used in pointer arithmetic (flags - buffer). If strstr() returns NULL because "flags" is not found in /proc/cpuinfo, this will cause undefined behavior and likely a crash. Add a NULL check after the strstr() call and handle the error appropriately by cleaning up resources and reporting a meaningful error message. Signed-off-by: Malaya Kumar Rout <mrout@redhat.com> Signed-off-by: Len Brown <len.brown@intel.com>
1 parent 7446bd6 commit 51860d6

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ void for_packages(unsigned long long pkg_set, int (func)(int))
520520

521521
void print_version(void)
522522
{
523-
printf("x86_energy_perf_policy 2025.9.19 Len Brown <lenb@kernel.org>\n");
523+
printf("x86_energy_perf_policy 2025.11.22 Len Brown <lenb@kernel.org>\n");
524524
}
525525

526526
void cmdline(int argc, char **argv)
@@ -662,6 +662,11 @@ void err_on_hypervisor(void)
662662
}
663663

664664
flags = strstr(buffer, "flags");
665+
if (!flags) {
666+
fclose(cpuinfo);
667+
free(buffer);
668+
err(1, "Failed to find 'flags' in /proc/cpuinfo");
669+
}
665670
rewind(cpuinfo);
666671
fseek(cpuinfo, flags - buffer, SEEK_SET);
667672
if (!fgets(buffer, 4096, cpuinfo)) {

0 commit comments

Comments
 (0)