1. 28 Nov, 2017 1 commit
    • Itamar Haber's avatar
      Standardizes the 'help' subcommand · 59d52f7f
      Itamar Haber authored
      This adds a new `addReplyHelp` helper that's used by commands
      when returning a help text. The following commands have been
      touched: DEBUG, OBJECT, COMMAND, PUBSUB, SCRIPT and SLOWLOG.
      
      WIP
      
      Fix entry command table entry for OBJECT for HELP option.
      
      After #4472 the command may have just 2 arguments.
      
      Improve OBJECT HELP descriptions.
      
      See #4472.
      
      WIP 2
      
      WIP 3
      59d52f7f
  2. 27 Nov, 2017 2 commits
  3. 24 Nov, 2017 9 commits
  4. 23 Nov, 2017 3 commits
  5. 22 Nov, 2017 3 commits
  6. 21 Nov, 2017 2 commits
  7. 08 Nov, 2017 3 commits
  8. 06 Nov, 2017 1 commit
    • antirez's avatar
      Fix saving of zero-length lists. · a1944c3e
      antirez authored
      Normally in modern Redis you can't create zero-len lists, however it's
      possible to load them from old RDB files generated, for instance, using
      Redis 2.8 (see issue #4409). The "Right Thing" would be not loading such
      lists at all, but this requires to hook in rdb.c random places in a not
      great way, for a problem that is at this point, at best, minor.
      
      Here in this commit instead I just fix the fact that zero length lists,
      materialized as quicklists with the first node set to NULL, were
      iterated in the wrong way while they are saved, leading to a crash.
      
      The other parts of the list implementation are apparently able to deal
      with empty lists correctly, even if they are no longer a thing.
      a1944c3e
  9. 03 Nov, 2017 1 commit
    • antirez's avatar
      SDS: improve sdsRemoveFreeSpace() to avoid useless data copy. · 34d5804d
      antirez authored
      Since SDS v2, we no longer have a single header, so the function to
      rewrite the SDS in terms of the minimum space required, instead of just
      using realloc() and let the underlying allocator decide what to do,
      was doing an allocation + copy every time the minimum possible header
      needed to represent the string was different than the current one.
      This could be often a bit wasteful, because if we go, for instance, from
      the 32 bit fields header to the 16 bit fields header, the overhead of
      the header is normally very small. With this commit we call realloc
      instead, unless the change in header size is very significant in relation
      to the string length.
      34d5804d
  10. 02 Nov, 2017 1 commit
  11. 01 Nov, 2017 2 commits
    • zhaozhao.zz's avatar
      885c4f85
    • zhaozhao.zz's avatar
      PSYNC2: safe free backlog when reach the time limit · 6ddf0ea2
      zhaozhao.zz authored
      When we free the backlog, we should use a new
      replication ID and clear the ID2. Since without
      backlog we can not increment master_repl_offset
      even do write commands, that may lead to inconsistency
      when we try to connect a "slave-before" master
      (if this master is our slave before, our replid
      equals the master's replid2). As the master have our
      history, so we can match the master's replid2 and
      second_replid_offset, that make partial sync work,
      but the data is inconsistent.
      6ddf0ea2
  12. 31 Oct, 2017 1 commit
    • antirez's avatar
      Fix buffer overflows occurring reading redis.conf. · ffcf7d5a
      antirez authored
      There was not enough sanity checking in the code loading the slots of
      Redis Cluster from the nodes.conf file, this resulted into the
      attacker's ability to write data at random addresses in the process
      memory, by manipulating the index of the array. The bug seems
      exploitable using the following techique: the config file may be altered so
      that one of the nodes gets, as node ID (which is the first field inside the
      structure) some data that is actually executable: then by writing this
      address in selected places, this node ID part can be executed after a
      jump. So it is mostly just a matter of effort in order to exploit the
      bug. In practice however the issue is not very critical because the
      bug requires an unprivileged user to be able to modify the Redis cluster
      nodes configuration, and at the same time this should result in some
      gain. However Redis normally is unprivileged as well. Yet much better to
      have this fixed indeed.
      
      Fix #4278.
      ffcf7d5a
  13. 30 Oct, 2017 2 commits
    • antirez's avatar
      Regression test for issue #4391. · b2e29597
      antirez authored
      b2e29597
    • antirez's avatar
      More robust object -> double conversion. · de474186
      antirez authored
      Certain checks were useless, at the same time certain malformed inputs
      were accepted without problems (emtpy strings parsed as zero).
      Cases where strtod() returns ERANGE but we still want to parse the input
      where ok in getDoubleFromObject() but not in the long variant.
      
      As a side effect of these fixes, this commit fixes #4391.
      de474186
  14. 28 Sep, 2017 4 commits
  15. 27 Sep, 2017 3 commits
  16. 21 Sep, 2017 2 commits