Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Sep 1997 00:10:53 +0300 (EEST)
From:      Heikki Suonsivu <hsu@mail.clinet.fi>
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   bin/4599: mktemp is too smart, accesses the path given
Message-ID:  <199709212110.AAA14120@katiska.clinet.fi>
Resent-Message-ID: <199709212120.OAA17393@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         4599
>Category:       bin
>Synopsis:       mktemp is too smart, accesses the path given
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Sep 21 14:20:01 PDT 1997
>Last-Modified:
>Originator:     Heikki Suonsivu
>Organization:
Clinet, Espoo, Finland
>Release:        FreeBSD 2.2-STABLE i386
>Environment:

FreeBSD, I think in all versions from at least 2.2.

>Description:

mktemp is supposed to randomize a given pathname by replacing X's in the
given string with process-specific numbers/data.  However, if the given
string does not point to a valid path, it returns NULL and botches the
argument string.  As it is supposed just to create a path name, this should
not happen ?

This breaks rdist6, which wants to create a temporary path and patch up
missing directories on the path afterwards.

>How-To-Repeat:

#include <stdio.h>
#include <string.h>

main()
{
	char foo[1024];

	strcpy(foo, "/some/unexistent/directoryXXXXXX");
	if (!mktemp(foo)) {
		perror(foo);
	}
	printf("foo become %s\n", foo);
}

hsu#katiska.clinet.fi Sun 10: ./hello
/some/unexistent: No such file or directory
foo become /some/unexistent
hsu#katiska.clinet.fi Sun 11:

>Fix:

Dirty workaround for rdist6 (server.c):

#if 0		
		if (!mktemp(new)) {
		  error("Cannot create temporary name, errno %d.", errno);
		}
#else
		{
		  char *p;
		  p = strstr(new, "XXXXXX");
		  if (p)
		    sprintf(p, "%6d", getpid() % 1000000);
		  else
		    error("Cannot create temporary name");
		}
#endif

-- 
Heikki Suonsivu, T{ysikuu 10 C 83/02210 Espoo/FINLAND, hsu@clinet.fi
mobile +358-40-5519679 work +358-9-43542270 fax -4555276
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709212110.AAA14120>