read: Add additional RESP3 bool validation

RESP3 bools should be only one of "#t\r\n" or "#f\r\n". We also allow
capital 'T' and 'F' to be lenient.
master
Alex Smith 2020-10-15 17:55:30 -04:00 committed by michael-grunder
parent 790b4d3b4d
commit 51e693f4fd
1 changed files with 9 additions and 1 deletions

10
read.c
View File

@ -331,7 +331,15 @@ static int processLineItem(redisReader *r) {
else
obj = (void*)REDIS_REPLY_NIL;
} else if (cur->type == REDIS_REPLY_BOOL) {
int bval = p[0] == 't' || p[0] == 'T';
int bval;
if (len != 1 || !strchr("tTfF", p[0])) {
__redisReaderSetError(r,REDIS_ERR_PROTOCOL,
"Bad bool value");
return REDIS_ERR;
}
bval = p[0] == 't' || p[0] == 'T';
if (r->fn && r->fn->createBool)
obj = r->fn->createBool(cur,bval);
else