Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02c24fa8 authored by Tejun Heo's avatar Tejun Heo Committed by Jeff Garzik
Browse files

dmi: fix date handling in dmi_get_year()



Year parsing in dmi_get_year() had the following two bugs.

* "00" is treated as invalid instead of 2000 because zero return from
  simple_strtoul() is treated as error.

* "0N" where N >= 8 is treated as invalid of 200N because the leading
  0 is considered to specify octal.

Fix the above two bugs by using endptr to detect invalid number and
forcing decimal.

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
parent bd30add8
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -577,6 +577,7 @@ int dmi_get_year(int field)
{
	int year;
	const char *s = dmi_get_system_info(field);
	char *e;

	if (!s)
		return -1;
@@ -587,8 +588,8 @@ int dmi_get_year(int field)
		return 0;

	s += 1;
	year = simple_strtoul(s, NULL, 0);
	if (year && year < 100) {	/* 2-digit year */
	year = simple_strtoul(s, &e, 10);
	if (s != e && year < 100) {	/* 2-digit year */
		year += 1900;
		if (year < 1996)	/* no dates < spec 1.0 */
			year += 100;