Add a few bounds checks

This commit is contained in:
Kovid Goyal 2017-11-05 10:27:10 +05:30
parent a614fe615f
commit aaf593d2df
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -483,13 +483,13 @@ parse_sgr(Screen *screen, uint32_t *buf, unsigned int num, unsigned int *params,
}
switch(state) {
case START:
params[num_params++] = 0;
if (num_params < MAX_PARAMS) params[num_params++] = 0;
SEND_SGR;
break;
case COLOR1:
case NORMAL:
case MULTIPLE:
if (i > num_start) { READ_PARAM; }
if (i > num_start && num_params < MAX_PARAMS) { READ_PARAM; }
if (num_params) { SEND_SGR; }
else { REPORT_ERROR("Incomplete SGR code"); }
break;
@ -497,7 +497,7 @@ parse_sgr(Screen *screen, uint32_t *buf, unsigned int num, unsigned int *params,
REPORT_ERROR("Invalid SGR code containing incomplete semi-colon separated color sequence");
break;
case COLOR3:
if (i > num_start) READ_PARAM;
if (i > num_start && num_params < MAX_PARAMS) READ_PARAM;
if (num_params != 5) {
REPORT_ERROR("Invalid SGR code containing incomplete semi-colon separated color sequence");
break;