Commit Graph

663 Commits

Author SHA1 Message Date
not-a-robot
36bddcf6ed Auto merge of #391 - redis:catch-error-buf-overflow, r=badboy
Prevent buffer overflow when formatting the error

strncat might copy n+1 bytes (n bytes from the source plus a terminating nul byte).
Also strncat appends after the first found nul byte. But all we pass is
a buffer we might not have zeroed out already.

Closes #380
2016-04-20 15:31:23 +02:00
Jan-Erik Rediger
63e1cf0c63 feat: Include latests changes from sds upstream 2016-04-20 15:27:38 +02:00
clark.kang
d76e13b6d5 apply sds from redis 2016-04-20 15:27:11 +02:00
not-a-robot
2139f78c71 Auto merge of #409 - xor-gate:fix-shadow-in-test, r=badboy
test.c: Fix shadowed name with typedef when compiling with -Wshadow

Fixes:
```
/data/files/users/jerry/github/hiredis/test.c: In function 'test_free_null':
/data/files/users/jerry/github/hiredis/test.c:331:11: warning: declaration of 'redisContext' shadows a global declaration [-Wshadow]
     void *redisContext = NULL;
           ^
In file included from /data/files/users/jerry/github/hiredis/test.c:13:0:
/data/files/users/jerry/github/hiredis/hiredis.h:161:3: note: shadowed declaration is here
 } redisContext;
   ^
```
2016-04-20 15:01:17 +02:00
Jerry Jacobs
8a5fdf0c9e test.c: Fix shadowed name with typedef when compiling with -Wshadow 2016-04-17 20:33:59 +00:00
Jerry Jacobs
9317a74ae5 fmacros.h: Fix warning when compiled with -Wundef 2016-04-17 20:23:42 +00:00
DongwenHuang
6bfc580a34 Update read.c
static char *seekNewline(char *s, size_t len)  : 
this function can not parse the string,such as "hello world\r". the case that  the last char is '\r'.
2016-04-11 23:27:45 +08:00
Jan-Erik Rediger
1b8ed38843 docs: Handle NULL in example
Closes #361
2016-03-26 01:02:48 +01:00
Jan-Erik Rediger
0335cb3e98 Prevent buffer overflow when formatting the error
strncat might copy n+1 bytes (n bytes from the source plus a terminating nul byte).
Also strncat appends after the first found nul byte. But all we pass is
a buffer we might not have zeroed out already.

Closes #380
2015-11-18 14:37:47 +01:00
Tom Lee
d4b715f0aa Fix potential race in 'invalid timeout' tests
It's possible for the call to connect() to succeed on the very first
try, in which case the logic for checking for invalid timeout fields is
never executed. When this happens, the tests fail because they expect a
REDIS_ERR_IO but no such failure has occurred.

Tests aside, this is a potential source of irritating and hard-to-find
intermittent bugs.

This patch forces the validation to occur early so that we get
predictable behavior whenever an invalid timeout is specified.
2015-11-18 00:36:29 -08:00
Tom Lee
bb1747b1bf Fix strerror_r on some esoteric platforms
Defining _XOPEN_SOURCE=1 causes strange behavior on Debian kfreebsd
archs (i.e. GNU userspace with FreeBSD kernel) when _GNU_SOURCE is not
defined.

Not sure I fully understand the bizarre semantics, but it seems to
use the XSI-compliant interface
(int strerror_r(int, char*, size_t)) but the GNU implementation
(char *strerror_r(int, char*, size_t)) such that strerror_r returns
32-bits of a 64-bit char * on x86_64 kfreebsd. We would expect
strerror_r to return zero when using the XSI-compliant strerror_r
implementation or a 64-bit char* when using the GNU version. Instead,
we get something in between!

Unless I'm missing something, being more explicit about what version
of _XOPEN_SOURCE we want seems to be the prudent thing to do here --
and if folks want the GNU implementation of strerror_r for some reason
they can always -D_GNU_SOURCE explicitly.
2015-11-18 00:28:10 -08:00
Jan-Erik Rediger
db1c46dac7 Merge pull request #373 from charsyam/feature/typos
fixing typos
2015-10-27 18:28:34 +01:00
charsyam
e2f6ee239c fixing typos 2015-10-28 02:19:24 +09:00
Jan-Erik Rediger
4b3786d57e Merge pull request #369 from jamel/snprintf
fix snprintf format string
2015-10-18 22:47:57 +02:00
Sergey Polovko
f932f0ed27 fix snprintf format string 2015-10-05 16:22:00 +03:00
Jan-Erik Rediger
010756025e Release version 0.13.3 2015-09-16 12:25:02 +02:00
olgeni
3d4b5c29ba Add FreeBSD message to test_blocking_connection_errors. 2015-09-16 12:24:03 +02:00
Jan-Erik Rediger
3c3a406ec4 Change date format in CHANGELOG
Easier to read, easier to sort.
2015-09-14 15:50:38 +02:00
Jan-Erik Rediger
d323b5ef9c Revert "redisBufferRead: Clear REDIS_CONNECTED flag when server closed connection"
This reverts commit 1db17f257b.

If the `REDIS_CONNECTED` flag is cleared,
the async onDisconnect callback function will never be called.
This causes problems as the disconnect is never reported back to the user.

Closes #359
2015-09-14 14:58:05 +02:00
Jan-Erik Rediger
53c32439bf Release version 0.13.2 2015-08-25 14:16:20 +02:00
Jerry Jacobs
1db17f257b redisBufferRead: Clear REDIS_CONNECTED flag when server closed connection 2015-08-24 17:03:16 +02:00
Jan-Erik Rediger
8e6d8195a9 Merge branch 'soname-stable' into unstable 2015-08-24 16:54:48 +02:00
Jan-Erik Rediger
a9a0af1d35 Use container-based Travis by installing packages through the addon 2015-07-28 00:21:24 +02:00
Jan-Erik Rediger
36a9802c54 Prevent crash on pending replies in async code
Fixes #335.
2015-07-27 23:35:02 +02:00
Jan-Erik Rediger
ded5374763 Fix a typo in the Mac OSX example 2015-07-27 23:19:41 +02:00
Dmitry Bakhvalov
c18a564818 Added MacOS X addapter and corresponding example.
Added MacOS X support via CoreFoundation run loop.
2015-07-27 23:19:14 +02:00
Pietro Cerutti
4a632a6038 Make sure to disconnect the adapter in the destructor 2015-07-27 23:17:41 +02:00
Pietro Cerutti
9069b147b0 Fix typo 2015-07-27 23:17:41 +02:00
Pietro Cerutti
1984b309b8 Add hooks for read/write/cleanup 2015-07-27 23:17:41 +02:00
Pietro Cerutti
8ef7d595ac Add Qt adapter and relative example. 2015-07-27 23:17:41 +02:00
Gergely Nagy
3b153cbf9d Add an Ivykis adapter
This adds a new adapter and an example for using hiredis with the ivykis
async I/O library.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
2015-07-27 22:48:05 +02:00
Jan-Erik Rediger
9644a96a48 Use stable soname version 2015-07-27 22:14:03 +02:00
Jan-Erik Rediger
2fc31e74b1 Merge pull request #341 from Cylix/glib_adapter_cpp_compilation
Use explicit casts for void* pointer in order to compile in C++
2015-06-25 17:10:02 +02:00
Jan-Erik Rediger
b9cc0add2c Merge pull request #333 from w359405949/w359405949-patch-1
undefined reference to `clock_gettime'
2015-06-24 15:35:35 +02:00
Simon Ninon
1c884ec75b Use explicit casts for void* pointer in order to compile in C++ 2015-06-22 14:44:57 +02:00
w359405949
485d0a148f Update Makefile
fix link error while run "make hiredis-example-libuv":

undefined reference to `clock_gettime'
undefined reference to `clock_getres'
2015-05-30 09:45:20 +08:00
Jan-Erik Rediger
f58dd249d6 Release version 0.13.1 2015-05-03 22:58:11 +02:00
Jan-Erik Rediger
26999505d6 Make sure to compile example to trigger edge-cases in compiling 2015-05-03 22:33:39 +02:00
Jan-Erik Rediger
8999750f12 Revert "Always compile with C99 standard."
This reverts commit d8145d79ce.
2015-05-03 22:32:42 +02:00
Alex Balashov
d132d676e9 Renamed redisContext struct member 'unix' to 'unix_sock' to avoid encountering defined constant 'unix' in GNU C environment (see commit d8145d79ce).
Not all code using hiredis can compile using '-std=c99', and/or not all users are able to easily make that change to the build process of various open-source projects, so it is more pragmatic to choose a different identifier that does not impose this requirement.
2015-04-30 15:01:31 -04:00
Jan-Erik Rediger
b9f907fb4c Merge pull request #324 from redis/fix-spontaneous-reply-leak
Fix memory leak in async spontaneous reply handling
2015-04-29 14:31:37 +02:00
antirez
2fc39eb4c3 Fix memory leak in async spontaneous reply handling
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.
2015-04-28 22:00:48 +02:00
Jan-Erik Rediger
d8145d79ce Always compile with C99 standard.
Turns out: gnu9x defines `unix` to 1, making it unusable as a variable
name.
2015-04-16 22:51:32 +02:00
Jan-Erik Rediger
31436c33ac Release version 0.13.0 2015-04-16 21:30:43 +02:00
Jan-Erik Rediger
4b30b5812d Add current maintainer to README 2015-04-16 21:29:47 +02:00
Jan-Erik Rediger
af598dbce5 Change copyright date and add copyright holder 2015-04-16 21:29:41 +02:00
Jan-Erik Rediger
b676007253 Document reconnect method 2015-04-16 21:01:00 +02:00
Jan-Erik Rediger
d9e0b0f6ab Implement a reconnect method for the client context
Originally implemented by @abedra as part of #306.

In case a write or read times out, we force an error state, because we
can't guarantuee that the next read will get the right data.
Instead we need to reconnect to have a clean-state connection, which is
now easily possible with this method.
2015-04-16 21:00:30 +02:00
Jan-Erik Rediger
b872919463 Make this work on Redis 3.0 2015-04-16 18:24:50 +02:00
Jan-Erik Rediger
27d4dcb6f0 Merge pull request #318 from neonquill/fix-install-target
Add PKGCONFNAME to install dependencies.
2015-03-29 13:20:17 +02:00