Using memset or other way in sal/osl/unx/security.c

Julien Nabet serval2412 at yahoo.fr
Mon Dec 24 09:37:51 PST 2012


On 24/12/2012 18:08, Norbert Thiebaud wrote:
> On Mon, Dec 24, 2012 at 8:59 AM, julien2412<serval2412 at yahoo.fr>  wrote:
>> Hello,
>>
>> In sal/osl/unx/security.c, I noticed these:
>>      278 sal_Bool SAL_CALL osl_getHomeDir(oslSecurity Security, rtl_uString
>> **pustrDirectory)
>>      279 {
>>      280     sal_Bool bRet=sal_False;
>>      281     sal_Char pszDirectory[PATH_MAX];
>>      282
>>      283     pszDirectory[0] = '\0';
>>
>>      373 sal_Bool SAL_CALL osl_getConfigDir(oslSecurity Security, rtl_uString
>> **pustrDirectory)
>>      374 {
>>      375     sal_Bool bRet = sal_False;
>>      376     sal_Char pszDirectory[PATH_MAX];
>>      377
>>      378     pszDirectory[0] = '\0';
>>
>> I'm not sure but I think it doesn't put the rest of the array to 0.
>> Would memsetting to 0 the whole array be right (and possibly useful)?
> What issue are you trying to solve ? i'm not sure as to the purpose of
> memsetting 512-1024 bytes
I heard/read that letting variable uninitialized could be dangerous, 
above all with C functions related to string/array of characters because 
\0 is the only checked element.
So the goal was to initialize the whole array (instead of first element 
only) to be sure there's no problem. But perhaps only urban legend or I 
simply just misunderstood the point with string/array in C+ (more 
probably last one :-))
>> What about this too ?
>> sal_Char pszDirectory[PATH_MAX] = "";
>> It compiles but I wonder if it would be ok for every env
> blanc-bonnet et bonnet-blanc :-)
for memset proposition and

sal_Char pszDirectory[PATH_MAX] = "";

ok because they put all the elements of the array to \0 but do you think 
it's "kif-kif" (:-)) too  for:

pszDirectory[0] = '\0';

This last one seems to put only the first element of the array to \0, 
the situation I think, perhaps wrongly, that may be dangerous (see 
before comment)
> although I don't know if the compiler is smart enough to avoid having
> an actual literal string of len 0 rather than just putting 0 in the
> first byte of the local variable.
That's the point, I don't know if there could be a trick or internal 
mechanism to think about C compilers of the different platforms.
>
> iow it would not change anything 'functionally' and at best it would
> be  a wash as far as generated code.
Ok, just a thought waiting by Xmas :-)
>
> Norbert
Julien


More information about the LibreOffice mailing list