In the file t_zset.c, the function zzlStrtod (code) has a buffer overrun bug:

double zzlStrtod(unsigned char *vstr, unsigned int vlen) {
    char buf[128];
    if (vlen > sizeof(buf))
        vlen = sizeof(buf);
    memcpy(buf,vstr,vlen);
    buf[vlen] = '\0';
    return strtod(buf,NULL);
 }

When vlen = sizeof(buf), the statement buf[vlen] = '\0' accessing the buffer buf is an off by one error. Thought it may not be directly exploitable, I think this is certainly a bug.

Comment From: oranagra

thanks. i agree it looks kinda harmless (one byte on the stack with value of 0 that doesn't depend on the user's inputs). do you wanna make a pull request to fit that?