[linux-yocto] [PATCH 15/25] FogBugz #536772: tty: newhaven_lcd: fix klocwork complaints
Meng.Li at windriver.com
Meng.Li at windriver.com
Tue Apr 3 19:37:38 PDT 2018
From: Alan Tull <atull at kernel.org>
commit b58ce5668a694f24196614aad69c338967d9eb8b from
https://github.com/altera-opensource/linux-socfpga.git
Two Klocwork complaints fixed:
/home/yves/linux/intel/linux-socfpga/drivers/tty/newhaven_lcd.c:404 --
-- SV.BANNED.REQUIRED.SPRINTF (4:Review) Analyze Function 'sprintf' is
deprecated. Replace with more secure equivalent like 'sprintf_s', add
missing logic, or re-architect.
* Fixed by using scnprintf instead of sprintf
/home/yves/linux/intel/linux-socfpga/drivers/tty/newhaven_lcd.c:149 --
-- SV.BANNED.REQUIRED.COPY (4:Review) Analyze Function 'memcpy' is
deprecated. Replace with more secure equivalent like 'memcpy_s', add
missing logic, or re-architect.
* Fixed by simplifying code, eliminating the memcpy.
Signed-off-by: Alan Tull <atull at kernel.org>
Signed-off-by: Meng Li <Meng.Li at windriver.com>
---
drivers/tty/newhaven_lcd.c | 22 +++++++++-------------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/drivers/tty/newhaven_lcd.c b/drivers/tty/newhaven_lcd.c
index 1d8479b..9671fda 100644
--- a/drivers/tty/newhaven_lcd.c
+++ b/drivers/tty/newhaven_lcd.c
@@ -56,13 +56,13 @@
#define CUSTOM_TILDE 0x01
struct custom_font {
- u8 mapping;
- u8 font[LCD_BYTES_PER_FONT];
+ const char font_cmd[LCD_BYTES_PER_FONT_CMD];
};
+/* Array of commands to send to set up custom fonts. */
static struct custom_font custom_fonts[] = {
- { CUSTOM_BACKSLASH, { 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, }, },
- { CUSTOM_TILDE, { 0x00, 0x00, 0x00, 0x08, 0x15, 0x02, 0x00, 0x00, }, },
+ { { LCD_COMMAND, LCD_CUSTOM_CHAR, CUSTOM_BACKSLASH, 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00, }, },
+ { { LCD_COMMAND, LCD_CUSTOM_CHAR, CUSTOM_TILDE, 0x00, 0x00, 0x00, 0x08, 0x15, 0x02, 0x00, 0x00, }, },
};
struct lcd {
@@ -139,17 +139,13 @@ static int lcd_cmd_backspace(struct lcd *lcd_data)
process the command */
static int lcd_load_custom_fonts(struct lcd *lcd_data)
{
- u8 buf[LCD_BYTES_PER_FONT_CMD];
int count, i;
for (i = 0; i < ARRAY_SIZE(custom_fonts); i++) {
- buf[0] = LCD_COMMAND;
- buf[1] = LCD_CUSTOM_CHAR;
- buf[2] = custom_fonts[i].mapping;
- memcpy(buf + 3, &custom_fonts[i].font, LCD_BYTES_PER_FONT);
-
- count = i2c_master_send(lcd_data->client, buf, sizeof(buf));
- if (count != sizeof(buf)) {
+ count = i2c_master_send(lcd_data->client,
+ (const char *)&custom_fonts[i].font_cmd,
+ LCD_BYTES_PER_FONT_CMD);
+ if (count != LCD_BYTES_PER_FONT_CMD) {
pr_err("%s: i2c_master_send returns %d\n", __func__, count);
return -1;
}
@@ -401,7 +397,7 @@ static ssize_t brightness_show(struct device *dev, struct device_attribute *attr
{
struct lcd *lcd_data = dev_get_drvdata(dev);
- return sprintf(buf, "%d\n", lcd_data->brightness);
+ return scnprintf(buf, 2, "%d\n", lcd_data->brightness);
}
static ssize_t brightness_store(struct device *dev, struct device_attribute *attr,
--
1.7.9.5
More information about the linux-yocto
mailing list