summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRabin Vincent <rabin.vincent@stericsson.com>2012-02-22 10:46:48 +0530
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-05-22 11:04:27 +0200
commit855aa2485f2dd99687363f67ad61ad981fb11cc0 (patch)
tree97764fe347ee8c3f408f35667ee91d16f114dae9
parentad9a2f95be71b544b02d2b67cc3af19160076418 (diff)
dispdev: don't write to read-only memory
dispdev sprintf()s onto a string literal, which could have been placed in read-only memory. ST-Ericsson ID: 418951 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: Trivial Change-Id: If65516146dc929cc058718d10e70d19f923b98a5 Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/49881 Reviewed-by: Jimmy RUBIN <jimmy.rubin@stericsson.com> Reviewed-by: QATOOLS Reviewed-by: QABUILD Reviewed-by: QATEST Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
-rw-r--r--drivers/misc/dispdev/dispdev.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/misc/dispdev/dispdev.c b/drivers/misc/dispdev/dispdev.c
index c504b69e80c..5413a252d35 100644
--- a/drivers/misc/dispdev/dispdev.c
+++ b/drivers/misc/dispdev/dispdev.c
@@ -74,6 +74,7 @@ struct dispdev {
* unregister_buffer as in the rotation use case.
*/
bool first_update;
+ char name[sizeof(DISPDEV_DEFAULT_DEVICE_PREFIX) + 3];
};
static int find_buf(struct dispdev *dd, enum buffer_state state)
@@ -536,14 +537,14 @@ int dispdev_create(struct mcde_display_device *ddev, bool overlay,
struct mcde_overlay_info info = {0};
static int counter;
- char *name = "dispdev0";
dd = kzalloc(sizeof(struct dispdev), GFP_KERNEL);
if (!dd)
return -ENOMEM;
- sprintf(name, "%s%d", DISPDEV_DEFAULT_DEVICE_PREFIX, counter++);
- init_dispdev(dd, ddev, name, overlay);
+ snprintf(dd->name, sizeof(dd->name), "%s%d",
+ DISPDEV_DEFAULT_DEVICE_PREFIX, counter++);
+ init_dispdev(dd, ddev, dd->name, overlay);
if (!overlay) {
ret = mcde_dss_enable_display(ddev);