[dvblast-devel] [PATCH] dvblastctl: Replace tmpnam(3) with mkstemp(3)

Christophe Massiot cmassiot at openheadend.tv
Tue Aug 23 00:24:32 CEST 2011


Hi,

I've finally merged all your patches, thanks! For this one I have had to add <sys/param.h> otherwise it wouldn't compile.

Do you want an SVN account for your next patches ? :-)

Le 19 août 2011 à 14:41, Georgi Chorbadzhiyski a écrit :

> The tmpnam(3) is used correctly but in order to avoid stupid
> GNU linker from complaining, rewrite the code to use mkstemp(3)
> 
> The patch corrects:
>  cc   dvblastctl.o util.o  -lrt -o dvblastctl
>  dvblastctl.o: In function `main':
>  dvblastctl.c:120: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
> 
> -- 
> Georgi Chorbadzhiyski
> http://georgi.unixsol.org/
> From ecf46c86582334dab9a7b461653f404129881d9d Mon Sep 17 00:00:00 2001
> From: Georgi Chorbadzhiyski <gf at unixsol.org>
> Date: Fri, 19 Aug 2011 15:34:07 +0300
> Subject: [PATCH] dvblastctl: Replace tmpnam(3) with mkstemp(3)
> 
> The tmpnam(3) is used correctly but in order to avoid stupid
> GNU linker from complaining, rewrite the code to use mkstemp(3)
> ---
> trunk/dvblastctl.c |   19 ++++++++++++++-----
> 1 files changed, 14 insertions(+), 5 deletions(-)
> 
> diff --git a/trunk/dvblastctl.c b/trunk/dvblastctl.c
> index 3ae22f2..30f0a02 100644
> --- a/trunk/dvblastctl.c
> +++ b/trunk/dvblastctl.c
> @@ -54,7 +54,8 @@ void usage()
> 
> int main( int i_argc, char **ppsz_argv )
> {
> -    char psz_client_socket[L_tmpnam];
> +    char psz_client_socket[PATH_MAX] = {0};
> +    char *client_socket_tmpl = "dvblastctl.clientsock.XXXXXX";
>     char *psz_srv_socket = NULL;
>     int i_fd;
>     int i = 65535;
> @@ -116,10 +117,18 @@ int main( int i_argc, char **ppsz_argv )
>           && ppsz_argv[optind + 2] == NULL )
>         usage();
> 
> -#warning expect brain-dead gcc warning about tmpnam here
> -    if ( tmpnam(psz_client_socket) == NULL )
> -    {
> -        msg_Err( NULL, "cannot build UNIX socket (%s)", strerror(errno) );
> +    /* Create client socket name */
> +    char *tmpdir = getenv("TMPDIR");
> +    snprintf( psz_client_socket, PATH_MAX - 1, "%s/%s",
> +       tmpdir ? tmpdir : "/tmp", client_socket_tmpl );
> +    psz_client_socket[PATH_MAX - 1] = '\0';
> +
> +    int tmp_fd = mkstemp(psz_client_socket);
> +    if ( tmp_fd > -1 ) {
> +        close(tmp_fd);
> +        unlink(psz_client_socket);
> +    } else {
> +        msg_Err( NULL, "cannot build UNIX socket %s (%s)", psz_client_socket, strerror(errno) );
>         return -1;
>     }
> 
> -- 
> 1.7.5.1
> 
> _______________________________________________
> dvblast-devel mailing list
> dvblast-devel at videolan.org
> http://mailman.videolan.org/listinfo/dvblast-devel



More information about the dvblast-devel mailing list