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