[PATCH] lib/util/util.c: move null-check before use

Herb Lewis hlewis at panasas.com
Thu Feb 25 23:26:19 UTC 2016


never mind I'm blind. :-) I missed the use in fname declaration.

On 02/25/2016 03:23 PM, Herb Lewis wrote:
> I'm confused as to why we do the initial assignment to len at all
> in the declaration. It gets overwritten by the return value of
> snprintf before it is ever used.
>
> On 02/25/2016 03:12 PM, Jeremy Allison wrote:
>> On Thu, Feb 25, 2016 at 05:06:41PM +0100, Aurélien Aptel wrote:
>>> Hi,
>>>
>>> This patch moves the null pointer check *before* the pointer is used in
>>> the strlen() call.
>>>      - still allocate the `fname` array on the stack
>>> - still compiles under C90 definition/code mixing rules
>>>
>>> Please review&push
>> A bit too 'clever' I'm afraid, although correct.
>>
>> I'd prefer splitting out so len is declared, than
>> initialized after the check for !dir.
>>
>> Jeremy.
>>
>>> Thanks!
>>>
>>> -- 
>>> Aurélien Aptel / SUSE Labs Samba Team
>>> GPG: 1839 CB5F 9F5B FB9B AA97  8C99 03C8 A49B 521B D5D3
>>> SUSE Linux GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
>>> GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG
>>> Nürnberg)
>>>  From 675aa8de1876c026052248f5112db8a15562980c Mon Sep 17 00:00:00 2001
>>> From: Aurelien Aptel <aaptel at suse.com>
>>> Date: Thu, 25 Feb 2016 14:11:10 +0100
>>> Subject: [PATCH 4/4] lib/util/util.c: move null-check before use
>>>
>>> moves a null pointer check *before* the pointer is used in
>>> the strlen() call
>>>
>>> - still allocate the `fname` array on the stack
>>> - still compiles under C90 definition/code mixing rules
>>>
>>> Signed-off-by: Aurelien Aptel <aaptel at suse.com>
>>> ---
>>>   lib/util/util.c | 6 +-----
>>>   1 file changed, 1 insertion(+), 5 deletions(-)
>>>
>>> diff --git a/lib/util/util.c b/lib/util/util.c
>>> index 03edd7f..683741c 100644
>>> --- a/lib/util/util.c
>>> +++ b/lib/util/util.c
>>> @@ -66,15 +66,11 @@ _PUBLIC_ const char *tmpdir(void)
>>>   **/
>>>   int create_unlink_tmp(const char *dir)
>>>   {
>>> -    size_t len = strlen(dir);
>>> +    size_t len = strlen(dir ? dir : (dir = tmpdir()));
>>>       char fname[len+25];
>>>       int fd;
>>>       mode_t mask;
>>>   -    if (!dir) {
>>> -        dir = tmpdir();
>>> -    }
>>> -
>>>       len = snprintf(fname, sizeof(fname), "%s/listenerlock_XXXXXX", 
>>> dir);
>>>       if (len >= sizeof(fname)) {
>>>           errno = ENOMEM;
>>> -- 
>>> 2.1.4
>>>
>>
>>
>>
>




More information about the samba-technical mailing list