diff --git a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c index 7563490b5358..e43210ddd90b 100644 --- a/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c +++ b/drivers/amlogic/media/vout/hdmitx/hdmi_tx_20/hdmi_tx_edid.c @@ -1855,7 +1855,7 @@ static int hdmitx_edid_search_IEEEOUI(char *buf) { int i; - for (i = 0; i < 0x180; i++) { + for (i = 0; i < 0x180 - 2; i++) { if ((buf[i] == 0x03) && (buf[i+1] == 0x0c) && (buf[i+2] == 0x00)) return 1; 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 7986dfef2119..30118641a4ef 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 @@ -4657,18 +4657,19 @@ static void hdmitx_fmt_attr(struct hdmitx_dev *hdev) (hdev->para->cs == COLORSPACE_RESERVED)) { strcpy(hdev->fmt_attr, "default"); } else { + memset(hdev->fmt_attr, 0, sizeof(hdev->fmt_attr)); switch (hdev->para->cs) { case COLORSPACE_RGB444: - memcpy(hdev->fmt_attr, "rgb,", 4); + memcpy(hdev->fmt_attr, "rgb,", 5); break; case COLORSPACE_YUV422: - memcpy(hdev->fmt_attr, "422,", 4); + memcpy(hdev->fmt_attr, "422,", 5); break; case COLORSPACE_YUV444: - memcpy(hdev->fmt_attr, "444,", 4); + memcpy(hdev->fmt_attr, "444,", 5); break; case COLORSPACE_YUV420: - memcpy(hdev->fmt_attr, "420,", 4); + memcpy(hdev->fmt_attr, "420,", 5); break; default: break; @@ -5501,8 +5502,10 @@ static void check_hdmiuboot_attr(char *token) } for (i = 0; cd[i] != NULL; i++) { if (strstr(token, cd[i])) { - if (strlen(cd[i]) < (sizeof(attr) - strlen(attr))) - strncat(attr, cd[i], strlen(cd[i])); + if (strlen(cd[i]) < sizeof(attr)) + 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';