Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 Oct 1996 20:56:37 -0600 (MDT)
From:      Marc Slemko <marcs@znep.com>
To:        Ron Bolin <rlb@mindspring.com>
Cc:        freebsd-current@FreeBSD.org
Subject:   Re: mktemp BUG?
Message-ID:  <Pine.BSF.3.95.961020205133.15603G-100000@alive.ampr.ab.ca>
In-Reply-To: <326AD788.167EB0E7@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Check the man page for mktemp:

>NOTES
>     A common problem that results in a core dump is that the programmer pass-
>     es in a read-only string to mktemp() or mkstemp().  This is common with
>     programs that were developed before ISO 9899: 1990 (``ISO C'') compilers
>     were common.  For example, calling mkstemp() with an argument of
>     "/tmp/tempfile.XXXXXX" will result in a core dump due to mkstemp() at-
>     tempting to modify the string constant that was given.  If the program in
>     question makes heavy use of that type of function call, you do have the
>     option of compiling the program so that it will store string constants in
>     a writable segment of memory.  See gcc(1) for more information.

Try something like:

	#include <unistd.h>
	#include <stdio.h>
	int main () {
		char *tmp;
		char filename[80];
		strcpy(filename, "/tmp/cp.XXXXX");
		tmp = mktemp(filename);
		printf("file: %s (%p, %p)\n", tmp, tmp, filename);
		return 0;
	}

Yes, mktemp is a bit strange.


On Sun, 20 Oct 1996, Ron Bolin wrote:

> Just checking my system and sanity. The mktemp(char *) function
> dumps core everytime. Seems to be a problem in the C lib version.
> Can anyone else duplicate this bug?
> #include <stdlib.h>
> char *tmp = mktemp("/tmp/cp.XXXXXX");




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.961020205133.15603G-100000>