diff options
author | Nick Mathewson <nickm@torproject.org> | 2016-03-14 13:02:50 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2016-03-14 13:03:44 -0400 |
commit | 36ad65a7d1709deeb4bc1ae3e994a30c3e7bf789 (patch) | |
tree | 706f763d81ecccc742fb7694914416da8592ac0c /src/common | |
parent | a64be7eaa9add3ac147447faae77906bbafd1b0a (diff) | |
download | tor-36ad65a7d1709deeb4bc1ae3e994a30c3e7bf789.tar.gz tor-36ad65a7d1709deeb4bc1ae3e994a30c3e7bf789.zip |
When using open() to make sure we created a dir, close the fd afterwards
Found by coverity. Not in any released Tor. Fixes CID 1355640.
Also, don't check for fd correctness with assert(fd). You need to
assert (fd >= 0).
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/util.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/common/util.c b/src/common/util.c index b4355115d1..e8be91f459 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -2114,7 +2114,10 @@ check_private_dir(const char *dirname, cpd_check_t check, * permissions on the directory will be checked again below.*/ fd = open(sandbox_intern_string(dirname), O_NOFOLLOW); - if ( fd == -1 ) return -1; + if (fd == -1) + return -1; + else + close(fd); } else if (!(check & CPD_CHECK)) { log_warn(LD_FS, "Directory %s does not exist.", dirname); @@ -2126,7 +2129,7 @@ check_private_dir(const char *dirname, cpd_check_t check, return 0; } - tor_assert(fd); + tor_assert(fd >= 0); //f = tor_strdup(dirname); //clean_name_for_stat(f); |