| Age | Commit message (Collapse) | Author | 
|---|
|  |  | 
|  |  | 
|  | This fix prevents hiredis from trying to allocate more than `SIZE_MAX`
bytes, which would result in a buffer overrun.
[Full Details](https://github.com/redis/hiredis/security/advisories/GHSA-hfm9-39pp-55p2) | 
|  |  | 
|  |  | 
|  | We need to allow our users to use redisContext->privdata as context
for any RESP3 PUSH messages, which means we can't use it for managing
SSL connections.
Bulletpoints:
* Create a secondary redisContext member for internal use only called
  privctx and rename the redisContextFuncs->free_privdata accordingly.
* Adds a `free_privdata` function pointer so the user can tie allocated
  memory to the lifetime of a redisContext (like they can already do
  with redisAsyncContext)
* Enables SSL tests in .travis.yml | 
|  | Small change to the logic introduced in #839 | 
|  | Add an additional timeout so the user has a convenient way of controlling distinct connect and command timeouts | 
|  | Static analyzer's can't tell that hi_calloc is calloc-like, and report a
potential null pointer dereference.  This isn't possible but it's
probably smarter to make the test anyway in the event code changes. | 
|  | See #848 | 
|  |  | 
|  |  | 
|  | Proper support for RESP3 PUSH messages.
By default, PUSH messages are now intercepted and the reply memory freed.  
This means existing code should work unchanged when connecting to Redis
>= 6.0.0 even if `CLIENT TRACKING` were then enabled.
Additionally, we define two callbacks users can configure if they wish to handle
these messages in a custom way:
void redisPushFn(void *privdata, void *reply);
void redisAsyncPushFn(redisAsyncContext *ac, void *reply);
See #825 | 
|  | * Don't try to ignore SIGPIPE in Windows (it doesn't exist).
* Add an include to our win32.h compatibility header.
* Enable building examples on Travis in Windows.
See #831 | 
|  | It appears that _WIN32 is always defined by MSVC whereas WIN32 may not
be, depending on configuration. | 
|  | * Switch to memurai for Windows tests
* Switch to macports from brew. | 
|  | Co-authored-by: Omri Steiner <omri@insoundz.com> | 
|  | When connecting with a timeout, we shouldn't also call `redisSetTimeout` which will implement a timeout for commands.
See related issue #722 | 
|  | Fix overflow bug in `sdsrange` | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | Using `strdup` as a struct member causes issues in older gcc | 
|  |  | 
|  | * Adds an indirection to every allocation/deallocation to allow users to 
  plug in ones of their choosing (use custom functions, jemalloc, etc).
* Gracefully handle OOM everywhere in hiredis.  This should make it possible
  for users of the library to have more flexibility in how they handle such situations.
* Changes `redisReaderTask->elements` from an `int` to a `long long` to prevent
  a possible overflow when transferring the task elements into a `redisReply`.
* Adds a configurable `max elements` member to `redisReader` that defaults to
  2^32 - 1.  This can be set to "unlimited" by setting the value to zero. | 
|  | Fixes #815 | 
|  | Standard function available and on most platforms uses a lookup table and not
a check with 3 ranges. | 
|  | Pull RESP3 verbatim string handling from Redis
Fixes #802 | 
|  | * Fix missing SSL build/install options.
* Use different build commands for non-Linux linkers.
* Add missing install targets.
Fixes #809 | 
|  | Addresses #506 | 
|  | * Remove nested depth limitation.
This commit removes the nested multi-bulk depth limitation of 7.
We do this by switching to pointer to pointer indirection and
growing the stack in chunks when needed.
See: #794, #421 | 
|  | Add support for timeouts in our libev adapter.
See #795 | 
|  | See #757 | 
|  | * Respect overridden libdir in CMake
See: #767 | 
|  | * Fix linker problems when building with SSL enabled on OSX
* Corrects `HIREDIS_SSL=ON` to `USE_SSL=ON` so we test building with
  SSL enabled on travis. | 
|  |  | 
|  | Explicitly call `uv_poll_init_socket` as that has slightly different semantics on Windows (and is identical to `uv_poll_init` on Linux).
http://docs.libuv.org/en/v1.x/poll.html#c.uv_poll_init_socket | 
|  | * Add CMake package configuration so hiredis can be more easily included in 
  other projects.
* Fixes hiredis_ssl such that it compiles and works in windows
Co-authored-by: nrivera <nrivera@blizzard.com>
Co-authored-by: Nick <heronr1@gmail.com> | 
|  | CMake: Set hiredis_ssl shared object version. | 
|  |  | 
|  | Unit tests in Windows and a Windows timeout fix
This commit gets our unit tests compiling and running on Windows as well as removes a duplicated `timeval` -> `DWORD` conversion logic in sockcompat.c 
There are minor differences in behavior between Linux and Windows to note:
1.  In Windows, opening a non-existent hangs forever in WSAPoll whereas
    it correctly returns with a "Connection refused" error on Linux.
    For that reason, I simply skip this test in Windows.
    It may be related to this known issue:
    https://daniel.haxx.se/blog/2012/10/10/wsapoll-is-broken/
2.  Timeouts are handled slightly differently in Windows and Linux.  
    In Linux, we intentionally set REDIS_ERR_IO for connection
    timeouts whereas in Windows we set REDIS_ERR_TIMEOUT.  It may be
    prudent to fix this discrepancy although there are almost certainly
    users relying on the current behavior. | 
|  | Fixes #778 | 
|  |  | 
|  |  | 
|  |  | 
|  | Housekeeping
* Check for C++ (#758, #750) 
* Include `alloc.h` in `make install` and `cmake`
* Add a `.def` file for Windows (#760)
* Include allocation wrappers referenced in adapter headers
* Fix minor syntax errors and typos in README
* Fix CI in Windows by properly escaping arguments (#761) | 
|  | install alloc.h | 
|  | alloc.h added in # 754
But not added to INSTALL_INCLUDE_PATH |