From d6048344398ec75996fee1f465abb61ab3aa377e Mon Sep 17 00:00:00 2001 From: shridhar kalavagunta Date: Sun, 4 Aug 2024 16:04:53 -0500 Subject: [PATCH] RAND_write_file(): Avoid potential file descriptor leak 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 Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/25081) --- crypto/rand/randfile.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crypto/rand/randfile.c b/crypto/rand/randfile.c index 31edd4f560..c120fa421c 100644 --- a/crypto/rand/randfile.c +++ b/crypto/rand/randfile.c @@ -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