diff options
author | Rabin Vincent <rabin.vincent@stericsson.com> | 2012-02-22 10:46:48 +0530 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2012-05-22 11:04:27 +0200 |
commit | 855aa2485f2dd99687363f67ad61ad981fb11cc0 (patch) | |
tree | 97764fe347ee8c3f408f35667ee91d16f114dae9 | |
parent | ad9a2f95be71b544b02d2b67cc3af19160076418 (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.c | 7 |
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); |