From: Stef B. <st...@gm...> - 2010-07-03 15:17:39
|
2010/7/3 Jean-Pierre ANDRE <jea...@wa...>: >> Message du 03/07/10 15:41 >> De : "Stef Bon" >> A : "Jean-Pierre ANDRE" >> Copie à : fus...@li... >> Objet : Re: [fuse-devel] void value and getxattr. >> >> >> Thanks a lot. >> >> About your first two remarks: the value entry->md5key_resource->md5key >> is terminated by a '\0', >> and is also copied by the strcpy command. > > That is the point, as the value was allocated by > > nlen=strlen(entry->md5key_resource->md5key); > value=malloc(nlen); > > which means no space was reserved for the > trailing '\0', which also implies strlen(value) > is unsafe. Yes of course, the size of md5key is fixed: MD5_DIR_LEN+1(=32+1). I've added the 1 to ensure the terminating zero, because the key is always 32 char long. I can better take the sizeof(md5key_resource->md5key). > >> >> But the latest was what caused the error: >> I've changed the size to strlen(value), and now I get the output I expect. >> >> A last question, do I have to free the value (which is allocated before)?? > > Yes. > >> >> Or does the function fuse_reply_buf do that? > > fuse_reply_buf() cannot know whether the buffer > was dynamically allocated (it could be static or > local). Yes I understand, thanks a lot. Stef Bon |