#983420 nntp.c: fix use of mkstemp()

Package:
src:nn
Source:
nn
Submitter:
Bjarni Ingi Gislason
Date:
2021-02-23 22:18:04 UTC
Severity:
normal
Tags:
#983420#5
Date:
2021-02-23 22:16:04 UTC
From:
To:
Dear Maintainer,

nntp.c: fix use of mkstemp()

Signed-off-by: Bjarni Ingi Gislason <bjarniig@rhi.hi.is>
---
 nntp.c | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/nntp.c b/nntp.c
index 0466bdf..ccd02da 100644
--- a/nntp.c
+++ b/nntp.c
@@ -996,11 +996,15 @@ nntp_get_active(void)
     if (!is_connected && connect_server() < 0)
 	return -1;

-    new_name = mkstemp(relative(db_directory, ".actXXXXXX"));
+/*    new_name = mkstemp(relative(db_directory, ".actXXXXXX")); */
+    new_name = relative(db_directory, ".actXXXXXX");

     switch (n = ask_server("LIST")) {
 	case OK_GROUPS:
-	    new = open_file(new_name, OPEN_CREATE_RW | MUST_EXIST);
+/*	    new = open_file(new_name, OPEN_CREATE_RW | MUST_EXIST); */
+	    fd = mkstemp(new_name); /* new_name changed to actual name*/
+	    new = fdopen(fd, r+);
+
 	    if (copy_text(new) == 0) {
 		if (fflush(new) != EOF)
 		    break;
@@ -1051,12 +1055,20 @@ nntp_get_newsgroups(void)
 {
     char           *new_name;
     FILE           *new;
-    int             n;
+    int             fd, n;
+
+/* Make a more secure temporary file than with "mktemp"
+  Have to add unlink function
+*/
+    new_name = relative(tmp_directory, "nngrXXXXXX");
+    fd = mkstemp(new_name);

-    new_name = mkstemp(relative(tmp_directory, "nngrXXXXXX"));
-    new = open_file(new_name, OPEN_CREATE_RW | OPEN_UNLINK);
-    if (new == NULL)
+    if (fd == -1) {
 	return NULL;
+    }
+
+    new = fdopen(fd, "r+");
+    unlink(new_name);

     if (!is_connected && connect_server() < 0)
 	goto err;