diff options
author | Guenter Roeck <linux@roeck-us.net> | 2012-07-20 20:53:48 -0400 |
---|---|---|
committer | Zhang Rui <rui.zhang@intel.com> | 2012-09-24 02:44:37 -0400 |
commit | 79a49168b595f5400ed3108cd57e90f5bbe144ca (patch) | |
tree | 6f504185a9163695adfe87ae07dcc72694cb36c8 /drivers | |
parent | f4a821ce6ed41970d0155f55067fb07009974fbe (diff) |
thermal: fix potential out-of-bounds memory access
temp_crit.name and temp_input.name have a length of 16 bytes. Using
THERMAL_NAME_LENGTH (20) as length parameter for snprintf() may result in
out-of-bounds memory accesses. Replace it with sizeof().
Addresses Coverity #115679
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Cc: Len Brown <lenb@kernel.org>
Cc: "Brown, Len" <len.brown@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/thermal/thermal_sys.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c index 5be8728c88a3..36e6f4d4ec3b 100644 --- a/drivers/thermal/thermal_sys.c +++ b/drivers/thermal/thermal_sys.c | |||
@@ -598,7 +598,7 @@ thermal_add_hwmon_sysfs(struct thermal_zone_device *tz) | |||
598 | temp->tz = tz; | 598 | temp->tz = tz; |
599 | hwmon->count++; | 599 | hwmon->count++; |
600 | 600 | ||
601 | snprintf(temp->temp_input.name, THERMAL_NAME_LENGTH, | 601 | snprintf(temp->temp_input.name, sizeof(temp->temp_input.name), |
602 | "temp%d_input", hwmon->count); | 602 | "temp%d_input", hwmon->count); |
603 | temp->temp_input.attr.attr.name = temp->temp_input.name; | 603 | temp->temp_input.attr.attr.name = temp->temp_input.name; |
604 | temp->temp_input.attr.attr.mode = 0444; | 604 | temp->temp_input.attr.attr.mode = 0444; |
@@ -611,7 +611,8 @@ thermal_add_hwmon_sysfs(struct thermal_zone_device *tz) | |||
611 | if (tz->ops->get_crit_temp) { | 611 | if (tz->ops->get_crit_temp) { |
612 | unsigned long temperature; | 612 | unsigned long temperature; |
613 | if (!tz->ops->get_crit_temp(tz, &temperature)) { | 613 | if (!tz->ops->get_crit_temp(tz, &temperature)) { |
614 | snprintf(temp->temp_crit.name, THERMAL_NAME_LENGTH, | 614 | snprintf(temp->temp_crit.name, |
615 | sizeof(temp->temp_crit.name), | ||
615 | "temp%d_crit", hwmon->count); | 616 | "temp%d_crit", hwmon->count); |
616 | temp->temp_crit.attr.attr.name = temp->temp_crit.name; | 617 | temp->temp_crit.attr.attr.name = temp->temp_crit.name; |
617 | temp->temp_crit.attr.attr.mode = 0444; | 618 | temp->temp_crit.attr.attr.mode = 0444; |