summaryrefslogtreecommitdiff
path: root/security/tripwire/patches/patch-ai
blob: 164f42bb3b398c980a40f674222ac5bbce991edf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
$NetBSD: patch-ai,v 1.1 2003/12/05 05:40:32 ben Exp $

--- src/siggen.c.orig	1994-07-25 08:24:12.000000000 -0700
+++ src/siggen.c
@@ -52,7 +52,6 @@ static char rcsid[] = "$Id: siggen.c,v 1
 
 extern int optind;
 int debuglevel = 0;
-char *mktemp();
 
 int (*pf_signatures [NUM_SIGS]) () = {
 					SIG0FUNC,
@@ -164,6 +163,7 @@ main(argc, argv)
     }
 
     if (readstdin) {
+	int fdout;
 	FILE *fpout;
 	/* generate temporary file name */
 	if ((tmpfilename = (char *) malloc(L_tmpnam + MAXPATHLEN)) == NULL) {
@@ -172,32 +172,26 @@ main(argc, argv)
 	};
 	(void) strcpy(tmpfilename, "/tmp/twzXXXXXX");
 
-	if ((char *) mktemp(tmpfilename) == NULL) {
-	    perror("siggen: mktemp()");
+	fdout = mkstemp(tmpfilename);
+	if (fdout == -1) {
+	    perror("siggen: mkstemp()");
 	    exit(1);
 	}
+	unlink(tmpfilename);
 
 	/*  output */
-	if (!(fpout = fopen(tmpfilename, "w"))) {
-	    char err[1024];
-	    sprintf(err, "main: fopen(%s)", tmpfilename);
-	    perror(err);
+	if (!(fpout = fdopen(fdout, "w"))) {
+	    perror("siggen: fdopen()");
 	    exit(1);
 	}
 	/*  copy */
 	while ((c = getc(stdin)) != EOF)
 	    putc(c, fpout);
-	fclose(fpout);
-	if ((fd = open(tmpfilename, O_RDONLY)) < 0) {
-	    perror("siggen: open");
-	    exit(1);
-	}
-	if (siggen(fd) < 0)
+	rewind(fpout);
+	if (siggen(fdout) < 0)
 	    errors++;
 
-	if (fd)
-	    close(fd);
-	unlink(tmpfilename);
+	fclose(fpout);
     }
 
     if (errors)