From e7460874ea1f46d181f2e1a81268879ef9c86f2e Mon Sep 17 00:00:00 2001 From: Kaifu Hu Date: Tue, 15 Jan 2019 14:43:08 +0800 Subject: [PATCH] hdmi: fix uboot logo flash [1/2] PD#SWPL-4194 Problem: Systemcontorl set display mode when attr is difference Solution: Fix color space property parser Verify: G12A/U200 Change-Id: Iddbcbbf3925b175833f534a287de413315ca1170 Signed-off-by: Kaifu Hu --- drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c index 53c55ae..192a9e9 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_main.c @@ -4037,7 +4037,7 @@ static int get_dt_vend_init_data(struct device_node *np, static void hdmitx_init_fmt_attr(struct hdmitx_dev *hdev) { - if (hdev->fmt_attr[0]) { + if (strlen(hdev->fmt_attr) >= 8) { pr_info(SYS "fmt_attr %s\n", hdev->fmt_attr); return; } @@ -4817,19 +4817,22 @@ static void check_hdmiuboot_attr(char *token) if (hdmitx_device.fmt_attr[0] != 0) return; + if (!token) return; for (i = 0; cs[i] != NULL; i++) { if (strstr(token, cs[i])) { - strncpy(attr, cs[i], strlen(attr)); + if (strlen(cs[i]) < sizeof(attr)) + strncpy(attr, cs[i], strlen(cs[i])); strcat(attr, ","); break; } } for (i = 0; cd[i] != NULL; i++) { if (strstr(token, cd[i])) { - strncat(attr, cd[i], strlen(attr) - strlen(cd[i])); + if (strlen(cd[i]) < (sizeof(attr) - strlen(attr))) + strncat(attr, cd[i], strlen(cd[i])); strncpy(hdmitx_device.fmt_attr, attr, sizeof(hdmitx_device.fmt_attr)); hdmitx_device.fmt_attr[15] = '\0'; -- 2.7.4