Re: [PATCH v2] src/log.c: Include libgen.h for basename API

Jussi Laakkonen <[email protected]>
Newsgroups dev.linux.lists.connman
Message-ID <[email protected]>
Hi all,

On 1/15/24 09:56, Marcel Holtmann wrote:
> Hi Khem,
> 
>> Use POSIX version of basename. This comes to front with latest musl
>> which dropped the declaration from string.h [1] it fails to build with
>> clang-17+ because it treats implicit function declaration as error.
>>
>> Fix it by applying the basename on a copy of string since posix version
>> may modify the input string.
>>
>> [1] https://git.musl-libc.org/cgit/musl/commit/?id=725e17ed6dff4d0cd22487bb64470881e86a92e7
>>
>> Signed-off-by: Khem Raj <[email protected]>
>> ---
>> v2: Fix formatting
>>
>> src/log.c | 6 ++++--
>> 1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/log.c b/src/log.c
>> index 554b046..2df3af7 100644
>> --- a/src/log.c
>> +++ b/src/log.c
>> @@ -24,6 +24,7 @@
>> #endif
>>
>> #include <stdio.h>
>> +#include <libgen.h>
>> #include <unistd.h>
>> #include <stdarg.h>
>> #include <stdlib.h>
>> @@ -196,6 +197,7 @@ int __connman_log_init(const char *program, const char *debug,
>> const char *program_name, const char *program_version)
>> {
>> static char path[PATH_MAX];
>> + char* tmp = strdup(program); >
> declaration are char *tmp;
> 

And perhaps use g_strdup() instead? coding-style.txt indirectly refers 
to use of g_ functions when available, as it is done with the rest of 
the codebase. Also, when small allocations fail the program should crash 
(M8).


>> int option = LOG_NDELAY | LOG_PID;
>>
>> program_exec = program;
>> @@ -212,8 +214,8 @@ int __connman_log_init(const char *program, const char *debug,
>> if (backtrace)
>> signal_setup(signal_handler);
>>
>> - openlog(basename(program), option, LOG_DAEMON);
>> -
> 
> Put the strdup here.
> 
> And you need to handle tmp == NULL since then it seems basename returns a constant “.”.
> 
>> + openlog(basename(tmp), option, LOG_DAEMON);
>> + free(tmp);
> 

I was just thinking maybe it would be better to handle the duplication 
of the program name, argv[0] in main.c (both connmand and vpnd), where 
it is given as initialization arg to __connman_log_init()?

Cheers,
  Jussi
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.