[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor/master] Resolve some coverity complaints in test_util_glob().



commit 4e8cb410a7db74b8099df3e17f38344e8201913b
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date:   Fri Aug 14 13:16:46 2020 -0400

    Resolve some coverity complaints in test_util_glob().
    
    Coverity's first complaint was that we didn't check the return
    values from chmod.  That's easily fixed.
    
    Coverity's second complaint was that there were code paths where we pass
    NULL to chmod.  For example, if this line failed, we'd "goto done",
    and then pass NULL to chmod.
      tt_ptr_op(dirname, OP_NE, NULL);
    
    Closes #40103.  Bug not in any released Tor.
---
 src/test/test_util.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

diff --git a/src/test/test_util.c b/src/test/test_util.c
index 0e2550d5c5..cab48cd514 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -4475,11 +4475,11 @@ test_util_glob(void *ptr)
   tor_asprintf(&forbidden_forbidden,
                "%s"PATH_SEPARATOR"forbidden"PATH_SEPARATOR"forbidden",dirname);
 #ifndef _WIN32
-  chmod(forbidden, 0700);
+  tt_int_op(0, OP_EQ, chmod(forbidden, 0700));
 #endif
   tt_int_op(0, OP_EQ, create_test_directory_structure(forbidden));
 #ifndef _WIN32
-  chmod(forbidden, 0);
+  tt_int_op(0, OP_EQ, chmod(forbidden, 0));
 #endif
 
 #define TEST(input) \
@@ -4638,10 +4638,10 @@ test_util_glob(void *ptr)
 
  done:
 #ifndef _WIN32
-  chmod(forbidden, 0700);
-  chmod(dir1_forbidden, 0700);
-  chmod(dir2_forbidden, 0700);
-  chmod(forbidden_forbidden, 0700);
+  (void) chmod(forbidden, 0700);
+  (void) chmod(dir1_forbidden, 0700);
+  (void) chmod(dir2_forbidden, 0700);
+  (void) chmod(forbidden_forbidden, 0700);
 #endif
   tor_free(dir1);
   tor_free(dir2);
@@ -4825,10 +4825,20 @@ test_util_get_glob_opened_files(void *ptr)
 
  done:
 #ifndef _WIN32
-  chmod(forbidden, 0700);
-  chmod(dir1_forbidden, 0700);
-  chmod(dir2_forbidden, 0700);
-  chmod(forbidden_forbidden, 0700);
+  {
+    int chmod_failed = 0;
+    if (forbidden)
+    chmod_failed |= chmod(forbidden, 0700);
+    if (dir1_forbidden)
+      chmod_failed |= chmod(dir1_forbidden, 0700);
+    if (dir2_forbidden)
+      chmod_failed |= chmod(dir2_forbidden, 0700);
+    if (forbidden_forbidden)
+      chmod_failed |= chmod(forbidden_forbidden, 0700);
+    if (chmod_failed) {
+      TT_FAIL(("unable to chmod a file on cleanup: %s", strerror(errno)));
+    }
+  }
 #endif
   tor_free(dir1);
   tor_free(dir2);



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits