check return values
authorJochen Eisinger <coffee@silcnet.org>
Mon, 12 Sep 2005 16:21:34 +0000 (16:21 +0000)
committerJochen Eisinger <coffee@silcnet.org>
Mon, 12 Sep 2005 16:21:34 +0000 (16:21 +0000)
apps/silcd/silcd.c

index 1ba9db3a92fa8277ab11fbb024601bf934cd0b0c..2ab5106562a6a6d202937d438349cf2297183f8c 100644 (file)
@@ -261,16 +261,21 @@ SILC_TASK_CALLBACK(stop_server)
 SILC_TASK_CALLBACK(dump_stats)
 {
   FILE *fdd;
-  int fd;
+  int fild;
   char filename[256];
 
   memset(filename, 0, sizeof(filename));
   snprintf(filename, sizeof(filename) - 1, "/tmp/silcd.%d.stats-XXXXXX", getpid());
-  fd = mkstemp(filename);
-  if (fd == -1)
+  fild = mkstemp(filename);
+  if (fild == -1)
     return;
 
-  fdd = fdopen(fd, "w");
+  fdd = fdopen(fild, "w");
+  if (fdd == NULL) {
+    close(fild);
+    unlink(filename);
+    return;
+  }
 
 #define STAT_OUTPUT(fmt, stat) fprintf(fdd, fmt "\n", (int)stat);