[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