• antirez's avatar
    Fix Sentinel memory leak (hiredis bug) · c806dd79
    antirez authored
    This fixes issue #2535, that was actually an hiredis library bug (I
    submitted an issue and fix to the redis/hiredis repo as well).
    
    When an asynchronous hiredis connection subscribes to a Pub/Sub channel
    and gets an error, and in other related conditions, the function
    redisProcessCallbacks() enters a code path where the link is
    disconnected, however the function returns before freeing the allocated
    reply object. This causes a memory leak. The memory leak was trivial to
    trigger in Redis Sentinel, which uses hiredis, every time we tried to
    subscribe to an instance that required a password, in case the Sentinel
    was configured either with the wrong password or without password at
    all. In this case, the -AUTH error caused the leaking code path to be
    executed.
    
    It was verified with Valgrind that after this change the leak no longer
    happens in Sentinel with a misconfigured authentication password.
    c806dd79
async.c 21.8 KB