From 33a59a1905feb5d786e9d457f287dd9e81a9f747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= Date: Tue, 27 Dec 2011 00:33:28 -0300 Subject: [PATCH] Use O_CLOEXEC where needed --- src/agent.c | 2 +- src/knownhost.c | 4 ++-- src/userauth.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) Index: libssh2-1.11.0/src/agent.c =================================================================== --- libssh2-1.11.0.orig/src/agent.c +++ libssh2-1.11.0/src/agent.c @@ -177,7 +177,7 @@ agent_connect_unix(LIBSSH2_AGENT *agent) "no auth sock variable"); } - agent->fd = socket(PF_UNIX, SOCK_STREAM, 0); + agent->fd = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0); if(agent->fd < 0) return _libssh2_error(agent->session, LIBSSH2_ERROR_BAD_SOCKET, "failed creating socket"); Index: libssh2-1.11.0/src/knownhost.c =================================================================== --- libssh2-1.11.0.orig/src/knownhost.c +++ libssh2-1.11.0/src/knownhost.c @@ -962,7 +962,7 @@ libssh2_knownhost_readfile(LIBSSH2_KNOWN "Unsupported type of known-host information " "store"); - file = fopen(filename, FOPEN_READTEXT); + file = fopen(filename, FOPEN_READTEXT_CLOEXEC); if(file) { while(fgets(buf, sizeof(buf), file)) { if(libssh2_knownhost_readline(hosts, buf, strlen(buf), type)) { @@ -1203,7 +1203,7 @@ libssh2_knownhost_writefile(LIBSSH2_KNOW "Unsupported type of known-host information " "store"); - file = fopen(filename, FOPEN_WRITETEXT); + file = fopen(filename, FOPEN_WRITETEXT_CLOEXEC); if(!file) return _libssh2_error(hosts->session, LIBSSH2_ERROR_FILE, "Failed to open file"); Index: libssh2-1.11.0/src/userauth.c =================================================================== --- libssh2-1.11.0.orig/src/userauth.c +++ libssh2-1.11.0/src/userauth.c @@ -654,7 +654,7 @@ file_read_publickey(LIBSSH2_SESSION * se _libssh2_debug((session, LIBSSH2_TRACE_AUTH, "Loading public key file: %s", pubkeyfile)); /* Read Public Key */ - fd = fopen(pubkeyfile, FOPEN_READTEXT); + fd = fopen(pubkeyfile, FOPEN_READTEXT_CLOEXEC); if(!fd) { return _libssh2_error(session, LIBSSH2_ERROR_FILE, "Unable to open public key file"); Index: libssh2-1.11.0/src/libssh2_priv.h =================================================================== --- libssh2-1.11.0.orig/src/libssh2_priv.h +++ libssh2-1.11.0/src/libssh2_priv.h @@ -1218,6 +1218,8 @@ size_t plain_method(char *method, size_t #define FOPEN_READTEXT "r" #define FOPEN_WRITETEXT "w" #define FOPEN_APPENDTEXT "a" +#define FOPEN_READTEXT_CLOEXEC "re" +#define FOPEN_WRITETEXT_CLOEXEC "we" #endif #endif /* __LIBSSH2_PRIV_H */