Skip to content

Commit

Permalink
PM / OPP: Use snprintf() instead of sprintf()
Browse files Browse the repository at this point in the history
sprintf() can access memory outside of the range of the character array,
and is risky in some situations. The driver specified prop_name string
can be longer than NAME_MAX here (only an attacker will do that though)
and so blindly copying it into the character array of size NAME_MAX
isn't safe. Instead we must use snprintf() here.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Viresh Kumar authored and Rafael J. Wysocki committed Jan 6, 2016
1 parent d9de19b commit 5ff24d6
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/base/power/opp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -808,7 +808,8 @@ static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,

/* Search for "opp-microvolt-<name>" */
if (dev_opp->prop_name) {
sprintf(name, "opp-microvolt-%s", dev_opp->prop_name);
snprintf(name, sizeof(name), "opp-microvolt-%s",
dev_opp->prop_name);
prop = of_find_property(opp->np, name, NULL);
}

Expand Down Expand Up @@ -849,7 +850,8 @@ static int opp_parse_supplies(struct dev_pm_opp *opp, struct device *dev,
/* Search for "opp-microamp-<name>" */
prop = NULL;
if (dev_opp->prop_name) {
sprintf(name, "opp-microamp-%s", dev_opp->prop_name);
snprintf(name, sizeof(name), "opp-microamp-%s",
dev_opp->prop_name);
prop = of_find_property(opp->np, name, NULL);
}

Expand Down

0 comments on commit 5ff24d6

Please sign in to comment.