Browse Source

Tweak usage of get_current_working_dir() for tor_malloc() paranoia.

We assume that tor_free() is not required to be compatible with
the platform malloc(), so we need to use a strdup here.
Nick Mathewson 6 years ago
parent
commit
89407bedf8
1 changed files with 9 additions and 1 deletions
  1. 9 1
      src/common/compat.c

+ 9 - 1
src/common/compat.c

@@ -2350,7 +2350,15 @@ static char *
 alloc_getcwd(void)
 {
 #ifdef HAVE_GET_CURRENT_DIR_NAME
-  return get_current_dir_name();
+  /* Glibc makes this nice and simple for us. */
+  char *cwd = get_current_dir_name();
+  char *result = NULL;
+  if (cwd) {
+    /* We make a copy here, in case tor_malloc() is not malloc(). */
+    result = tor_strdup(cwd);
+    raw_free(cwd); // alias for free to avoid tripping check-spaces.
+  }
+  return result;
 #else
   size_t size = 1024;
   char *buf = NULL;