From: Marc-André Lureau <marcandre.lur...@redhat.com> The function takes care of setting CLOEXEC, and reporting error.
Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> --- qga/commands-posix.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 98d481a58485..974bcbee7e97 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -370,21 +370,16 @@ safe_open_or_create(const char *path, const char *mode, Error **errp) * open() is decisive and its third argument is ignored, and the second * open() and the fchmod() are never called. */ - fd = open(path, oflag | ((oflag & O_CREAT) ? O_EXCL : 0), 0); + fd = qemu_open_cloexec(path, oflag | ((oflag & O_CREAT) ? O_EXCL : 0), 0, errp); if (fd == -1 && errno == EEXIST) { + g_clear_pointer(errp, error_free); oflag &= ~(unsigned)O_CREAT; - fd = open(path, oflag); + fd = qemu_open_cloexec(path, oflag, 0, errp); } if (fd == -1) { - error_setg_errno(errp, errno, - "failed to open file '%s' " - "(mode: '%s')", - path, mode); goto end; } - qemu_set_cloexec(fd); - if ((oflag & O_CREAT) && fchmod(fd, DEFAULT_NEW_FILE_MODE) == -1) { error_setg_errno(errp, errno, "failed to set permission " -- 2.36.0.44.g0f828332d5ac