summaryrefslogtreecommitdiff
path: root/chat/silc-server/patches/patch-ac
blob: a78465ac4c28c54868bdbe95a47d75559227704f (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
$NetBSD: patch-ac,v 1.12 2005/09/13 22:02:24 salo Exp $

--- apps/silcd/silcd.c.orig	2005-05-10 15:22:52.000000000 +0200
+++ apps/silcd/silcd.c	2005-09-13 21:06:01.000000000 +0200
@@ -261,14 +261,22 @@
 SILC_TASK_CALLBACK(dump_stats)
 {
   FILE *fdd;
+  int fild;
   char filename[256];
 
   memset(filename, 0, sizeof(filename));
-  snprintf(filename, sizeof(filename) - 1, "/tmp/silcd.%d.stats", getpid());
-  fdd = fopen(filename, "w+");
-  if (!fdd)
+  snprintf(filename, sizeof(filename) - 1, "/tmp/silcd.%d.stats-XXXXXX", getpid());
+  fild = mkstemp(filename);
+  if (fild == -1)
     return;
 
+  fdd = fdopen(fild, "w");
+  if (fdd == NULL) {
+    close(fild);
+    unlink(filename);
+    return;
+  }
+
 #define STAT_OUTPUT(fmt, stat) fprintf(fdd, fmt "\n", (int)stat);
 
   fprintf(fdd, "SILC Server %s Statistics\n\n", silcd->server_name);