Commit 51860d63 authored by Malaya Kumar Rout's avatar Malaya Kumar Rout Committed by Len Brown
Browse files

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: default avatarMalaya Kumar Rout <mrout@redhat.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 7446bd61
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -520,7 +520,7 @@ void for_packages(unsigned long long pkg_set, int (func)(int))

void print_version(void)
{
	printf("x86_energy_perf_policy 2025.9.19 Len Brown <lenb@kernel.org>\n");
	printf("x86_energy_perf_policy 2025.11.22 Len Brown <lenb@kernel.org>\n");
}

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

	flags = strstr(buffer, "flags");
	if (!flags) {
		fclose(cpuinfo);
		free(buffer);
		err(1, "Failed to find 'flags' in /proc/cpuinfo");
	}
	rewind(cpuinfo);
	fseek(cpuinfo, flags - buffer, SEEK_SET);
	if (!fgets(buffer, 4096, cpuinfo)) {