Replace insecure mktemp() function with the tmpfile() as per bug

http://bugzilla.remotesensing.org/show_bug.cgi?id=78
This commit is contained in:
Andrey Kiselev 2005-03-03 12:48:31 +00:00
parent d1e479c9a4
commit 546e7e62b7

View File

@ -1,4 +1,4 @@
/* $Id: fax2ps.c,v 1.18 2004-11-29 16:20:30 dron Exp $" */ /* $Id: fax2ps.c,v 1.19 2005-03-03 12:48:31 dron Exp $" */
/* /*
* Copyright (c) 1991-1997 Sam Leffler * Copyright (c) 1991-1997 Sam Leffler
@ -190,13 +190,17 @@ void
printTIF(TIFF* tif, uint16 pageNumber) printTIF(TIFF* tif, uint16 pageNumber)
{ {
uint32 w, h; uint32 w, h;
uint16 unit; uint16 unit, compression;
float xres, yres, scale = 1.0; float xres, yres, scale = 1.0;
tstrip_t s, ns; tstrip_t s, ns;
time_t creation_time; time_t creation_time;
TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h); TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);
TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w); TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w);
if (!TIFFGetField(tif, TIFFTAG_COMPRESSION, &compression)
|| compression < COMPRESSION_CCITTRLE
|| compression > COMPRESSION_CCITT_T6)
return;
if (!TIFFGetField(tif, TIFFTAG_XRESOLUTION, &xres) || !xres) { if (!TIFFGetField(tif, TIFFTAG_XRESOLUTION, &xres) || !xres) {
TIFFWarning(TIFFFileName(tif), TIFFWarning(TIFFFileName(tif),
"No x-resolution, assuming %g dpi", defxres); "No x-resolution, assuming %g dpi", defxres);
@ -368,28 +372,22 @@ main(int argc, char** argv)
} else { } else {
int n; int n;
FILE* fd; FILE* fd;
char temp[1024], buf[16*1024]; char buf[16*1024];
strcpy(temp, "/tmp/fax2psXXXXXX"); fd = tmpfile();
(void) mktemp(temp);
fd = fopen(temp, "w");
if (fd == NULL) { if (fd == NULL) {
fprintf(stderr, "Could not create temp file \"%s\"\n", temp); fprintf(stderr, "Could not create temporary file, exiting.\n");
fclose(fd);
exit(-2); exit(-2);
} }
while ((n = read(fileno(stdin), buf, sizeof (buf))) > 0) while ((n = read(fileno(stdin), buf, sizeof (buf))) > 0)
write(fileno(fd), buf, n); write(fileno(fd), buf, n);
tif = TIFFOpen(temp, "r"); tif = TIFFFdOpen(fileno(fd), "temp", "r");
#ifndef VMS
unlink(temp);
#else
remove(temp);
#endif
if (tif) { if (tif) {
fax2ps(tif, npages, pages, "<stdin>"); fax2ps(tif, npages, pages, "<stdin>");
TIFFClose(tif); TIFFClose(tif);
} else } else
fprintf(stderr, "%s: Can not open, or not a TIFF file.\n", temp); fprintf(stderr, "Can not open, or not a TIFF file.\n");
fclose(fd); fclose(fd);
} }
printf("%%%%Trailer\n"); printf("%%%%Trailer\n");