]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
RAND_write_file(): Avoid potential file descriptor leak
authorshridhar kalavagunta <coolshrid@hotmail.com>
Sun, 4 Aug 2024 21:04:53 +0000 (16:04 -0500)
committerTomas Mraz <tomas@openssl.org>
Mon, 19 Aug 2024 09:10:43 +0000 (11:10 +0200)
If fdopen() call fails we need to close the fd. Also
return early as this is most likely some fatal error.

Fixes #25064

Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/25081)

crypto/rand/randfile.c

index 31edd4f5603f29203e5a235c6810b6eab56c1fe5..c120fa421c40d8545e2a7425b6f12404a11b411d 100644 (file)
@@ -208,8 +208,16 @@ int RAND_write_file(const char *file)
          * should be restrictive from the start
          */
         int fd = open(file, O_WRONLY | O_CREAT | O_BINARY, 0600);
-        if (fd != -1)
+
+        if (fd != -1) {
             out = fdopen(fd, "wb");
+            if (out == NULL) {
+                close(fd);
+                ERR_raise_data(ERR_LIB_RAND, RAND_R_CANNOT_OPEN_FILE,
+                               "Filename=%s", file);
+                return -1;
+            }
+        }
     }
 #endif