stack overflow on sasl authentication failure
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libmemcached |
Opinion
|
Undecided
|
Unassigned |
Bug Description
libmemcached version: 1.0.3, 1.0.4
the following code (extracted, simplified):
-------
if ( sasl_client_
{
}
{
if ( NULL == (memc_ = memcached_
{
}
rc = memcached_
if ( rc != MEMCACHED_SUCCESS )
{
}
rc = memcached_
...
-------
results in segfault with the following backtrace:
-------
(gdb) bt
#0 0x001553ab in vfprintf () from /lib/tls/libc.so.6
#1 0x00178d24 in vsnprintf () from /lib/tls/libc.so.6
#2 0x0015e0a4 in snprintf () from /lib/tls/libc.so.6
#3 0x080d2240 in memcached_set_error ()
#4 0x080d8900 in binary_
#5 0x080d8f36 in _read_one_response ()
#6 0x080d9138 in memcached_response ()
#7 0x080d90ad in memcached_response ()
#8 0x080dba67 in memcached_
#9 0x080d0e49 in _memcached_connect ()
#10 0x080d0ef9 in memcached_
#11 0x080d95d8 in __server_
#12 0x080d9774 in memcached_
#13 0x080d7f38 in memcached_
#14 0x080d7da8 in memcached_
#15 0x080d63e9 in memcached_io_reset ()
#16 0x080d8fa8 in _read_one_response ()
#17 0x080d9138 in memcached_response ()
#18 0x080d90ad in memcached_response ()
#19 0x080dba67 in memcached_
#20 0x080d0e49 in _memcached_connect ()
#21 0x080d0ef9 in memcached_
#22 0x080d95d8 in __server_
#23 0x080d9774 in memcached_
#24 0x080d7f38 in memcached_
#25 0x080d7da8 in memcached_
#26 0x080d63e9 in memcached_io_reset ()
#27 0x080d8fa8 in _read_one_response ()
#28 0x080d9138 in memcached_response ()
#29 0x080d90ad in memcached_response ()
#30 0x080dba67 in memcached_
#31 0x080d0e49 in _memcached_connect ()
#32 0x080d0ef9 in memcached_
#33 0x080d95d8 in __server_
...
#9252 0x080d9774 in memcached_
#9253 0x080d7f38 in memcached_
#9254 0x080d7da8 in memcached_
#9255 0x080d63e9 in memcached_io_reset ()
#9256 0x080d8fa8 in _read_one_response ()
#9257 0x080d9138 in memcached_response ()
#9258 0x080d90ad in memcached_response ()
#9259 0x080dba67 in memcached_
#9260 0x080d0e49 in _memcached_connect ()
#9261 0x080d0ef9 in memcached_
#9262 0x080d95d8 in __server_
#9263 0x080d9774 in memcached_
#9264 0x080d7f38 in memcached_
#9265 0x080d7da8 in memcached_
#9266 0x080d63e9 in memcached_io_reset ()
#9267 0x080d8fa8 in _read_one_response ()
#9268 0x080d9138 in memcached_response ()
#9269 0x080d90ad in memcached_response ()
#9270 0x080dba67 in memcached_
#9271 0x080d0e49 in _memcached_connect ()
#9272 0x080d0ef9 in memcached_
#9273 0x080d95d8 in __server_
#9274 0x080d523a in memcached_
#9275 0x0805112a in MemcachedPool (this=0x9133780, initial=5, max=100, servers=@0x912a04c, username=
#9276 0x0804f9e9 in Box::Backend:
#9277 0x08074693 in Box::TPTFHandle
#9278 0x0807c16c in Box::Timer:
#9279 0x080a7c1d in P90::Thread:
#9280 0x00c2cdd8 in start_thread () from /lib/tls/
#9281 0x001edfca in clone () from /lib/tls/libc.so.6
(gdb)
-------
this happens when sasl authentication fails, e.g.:
- connecting to membase/couchbase with bucket/password not registered in backend
- connecting to text-mode memcached (with libmemcached operating in binary/sasl mode)
- etc
the same code worked ok with version 0.47.
is there any other info that could help?
description: | updated |
Changed in libmemcached: | |
status: | Incomplete → Opinion |
note: in provided code sample, "memcached_ server_ st *srv = memcached_ servers_ parse(servers. c_str() );" line: <servers> string contains single ip/hostname.