summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRobby Cai <robby.cai@nxp.com>2019-04-28 16:28:47 +0800
committerRobby Cai <robby.cai@nxp.com>2019-05-06 11:19:00 +0800
commit1b54ea4d98d0a78dbd9202d91b9ec209f4f5a9b8 (patch)
tree3fc30fba0e0f08717f44ca6c25a3d01ef16fa550 /drivers
parent39dc0aaffe5a7499b0d3ceb594782e7c4082b90f (diff)
MLK-21590 epdc: fix potential out of array boundary access
The function mxc_epdc_fb_init_hw() could be called more than once when load the firmware due to some reason. If this case happens, then for following codes, the array fb_data->fw_str pointed to will be accessed out of bound. It probably causes kernel crash, or makes fb_data->fw_str get a wrong value, then the driver may be stuck during the process of loading the firmware. if (fb_data->cur_mode) { strcat(fb_data->fw_str, "imx/epdc/epdc_"); strcat(fb_data->fw_str, fb_data->cur_mode->vmode->name); strcat(fb_data->fw_str, ".fw"); } This patch fixed that by using strcpy instread. Signed-off-by: Robby Cai <robby.cai@nxp.com> Reviewed-by: Guoniu.Zhou <guoniu.zhou@nxp.com> (cherry picked from commit 9d07c19d01a97ca7e5570a1cd4681ad600d0486e)
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/fbdev/mxc/mxc_epdc_fb.c2
-rw-r--r--drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_fb.c
index 0109b0371b76..49a0d6e519b9 100644
--- a/drivers/video/fbdev/mxc/mxc_epdc_fb.c
+++ b/drivers/video/fbdev/mxc/mxc_epdc_fb.c
@@ -4424,7 +4424,7 @@ static int mxc_epdc_fb_init_hw(struct fb_info *info)
* Format is "imx/epdc_[panel string].fw"
*/
if (fb_data->cur_mode) {
- strcat(fb_data->fw_str, "imx/epdc/epdc_");
+ strcpy(fb_data->fw_str, "imx/epdc/epdc_");
strcat(fb_data->fw_str, fb_data->cur_mode->vmode->name);
strcat(fb_data->fw_str, ".fw");
}
diff --git a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
index cd8d49adbf14..9ec89d033a82 100644
--- a/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
+++ b/drivers/video/fbdev/mxc/mxc_epdc_v2_fb.c
@@ -4854,7 +4854,7 @@ static int mxc_epdc_fb_init_hw(struct fb_info *info)
* Format is "imx/epdc/epdc_[panel string].fw"
*/
if (fb_data->cur_mode) {
- strcat(fb_data->fw_str, "imx/epdc/epdc_");
+ strcpy(fb_data->fw_str, "imx/epdc/epdc_");
strcat(fb_data->fw_str, fb_data->cur_mode->vmode->name);
strcat(fb_data->fw_str, ".fw");
}