diff --git a/hiredis.c b/hiredis.c index 83218cd..dfee705 100644 --- a/hiredis.c +++ b/hiredis.c @@ -826,10 +826,8 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) { } fmt_invalid: - /* Consume and discard vararg */ - va_arg(ap,void); va_end(_cpy); - break; + goto err; fmt_valid: _l = (_p+1)-c; diff --git a/test.c b/test.c index d3a3dbd..0dae70a 100644 --- a/test.c +++ b/test.c @@ -162,11 +162,9 @@ static void test_format_commands(void) { len == 4+4+(8+2)+4+(3+2)); free(cmd); - test("Format command with wrong printf format and extra interpolation: "); + test("Format command with invalid printf format: "); len = redisFormatCommand(&cmd,"key:%08p %b",1234,"foo",3); - test_cond(strncmp(cmd,"*2\r\n$6\r\nkey:8p\r\n$3\r\nfoo\r\n",len) == 0 && - len == 4+4+(6+2)+4+(3+2)); - free(cmd); + test_cond(len == -1); const char *argv[3]; argv[0] = "SET";