You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by Jia Yeou Yeh <jo...@tera-asper.net> on 2017/01/21 18:47:48 UTC

bug report about zookeeper c client library

version: 3.5.2-alpha
function: c client library
file:addrvec.c
function: addrvec_grow

bug source: after c function "realloc" call , the new buffer without initialized ,after that when then function "addrvec_contains" by means of memcmp will always evaluate to false ;
action: add memset(avec->data,'\0',sizeof(*avec->data)*avec->capacity); after success realloc.
-- 
大州數位服務股份有限公司
葉佳友
台北市杭州南路一段27號9樓
電話:(02)2394-8686
傳真:(02)2394-2929
手機:0939112959
E-Mail:joe@tera-asper.net


Re: bug report about zookeeper c client library

Posted by Michael Han <ha...@cloudera.com>.
Hi Jia Yeou,

As far as I know, the memory allocated by realloc here should be
initialized on caller(s) of addrvec_grow - if you check the call graph of
addrvec_grow you will see where the memory gets initialized. Basically the
memory will only be initialized when we know what to fill in; rather than
zero the chunk out with memset immediately after realloc, we save a sys
call by lazy initializing.

If you could provide more information (such as a call stack) that pointed
out the uninitialized memory cause any issue that would be helpful. Also,
for bug report, please directly open an issue at
https://issues.apache.org/jira/browse/ZOOKEEPER.

On Sat, Jan 21, 2017 at 10:47 AM, Jia Yeou Yeh <jo...@tera-asper.net> wrote:

> version: 3.5.2-alpha
> function: c client library
> file:addrvec.c
> function: addrvec_grow
>
> bug source: after c function "realloc" call , the new buffer without
> initialized ,after that when then function "addrvec_contains" by means of
> memcmp will always evaluate to false ;
> action: add memset(avec->data,'\0',sizeof(*avec->data)*avec->capacity);
> after success realloc.
> --
> 大州數位服務股份有限公司
> 葉佳友
> 台北市杭州南路一段27號9樓
> 電話:(02)2394-8686
> 傳真:(02)2394-2929
> 手機:0939112959
> E-Mail:joe@tera-asper.net
>
>


-- 
Cheers
Michael.