diff --git a/src/common/util.c b/src/common/util.c
index 5a104d39f1..6a557c9560 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -225,43 +225,6 @@ add_laplace_noise(int64_t signal_, double random_, double delta_f,
* String manipulation
* ===== */
-/** Return a newly allocated string equal to string, except that every
- * character in chars_to_escape is preceded by a backslash. */
-char *
-tor_escape_str_for_pt_args(const char *string, const char *chars_to_escape)
-{
- char *new_string = NULL;
- char *new_cp = NULL;
- size_t length, new_length;
-
- tor_assert(string);
-
- length = strlen(string);
-
- if (!length) /* If we were given the empty string, return the same. */
- return tor_strdup("");
- /* (new_length > SIZE_MAX) => ((length * 2) + 1 > SIZE_MAX) =>
- (length*2 > SIZE_MAX - 1) => (length > (SIZE_MAX - 1)/2) */
- if (length > (SIZE_MAX - 1)/2) /* check for overflow */
- return NULL;
-
- /* this should be enough even if all characters must be escaped */
- new_length = (length * 2) + 1;
-
- new_string = new_cp = tor_malloc(new_length);
-
- while (*string) {
- if (strchr(chars_to_escape, *string))
- *new_cp++ = '\\';
-
- *new_cp++ = *string++;
- }
-
- *new_cp = '\0'; /* NUL-terminate the new string */
-
- return new_string;
-}
-
/* =====
* Time
* ===== */
diff --git a/src/common/util.h b/src/common/util.h
index f473d6f59f..8007aa05c7 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -72,8 +72,6 @@ int64_t clamp_double_to_int64(double number);
/* String manipulation */
-char *tor_escape_str_for_pt_args(const char *string,
- const char *chars_to_escape);
/* Time helpers */
long tv_udiff(const struct timeval *start, const struct timeval *end);
diff --git a/src/or/transports.c b/src/or/transports.c
index 6cc7f844ab..34161fd16e 100644
--- a/src/or/transports.c
+++ b/src/or/transports.c
@@ -1699,3 +1699,40 @@ pt_free_all(void)
managed_proxy_list=NULL;
}
}
+
+/** Return a newly allocated string equal to string, except that every
+ * character in chars_to_escape is preceded by a backslash. */
+char *
+tor_escape_str_for_pt_args(const char *string, const char *chars_to_escape)
+{
+ char *new_string = NULL;
+ char *new_cp = NULL;
+ size_t length, new_length;
+
+ tor_assert(string);
+
+ length = strlen(string);
+
+ if (!length) /* If we were given the empty string, return the same. */
+ return tor_strdup("");
+ /* (new_length > SIZE_MAX) => ((length * 2) + 1 > SIZE_MAX) =>
+ (length*2 > SIZE_MAX - 1) => (length > (SIZE_MAX - 1)/2) */
+ if (length > (SIZE_MAX - 1)/2) /* check for overflow */
+ return NULL;
+
+ /* this should be enough even if all characters must be escaped */
+ new_length = (length * 2) + 1;
+
+ new_string = new_cp = tor_malloc(new_length);
+
+ while (*string) {
+ if (strchr(chars_to_escape, *string))
+ *new_cp++ = '\\';
+
+ *new_cp++ = *string++;
+ }
+
+ *new_cp = '\0'; /* NUL-terminate the new string */
+
+ return new_string;
+}
diff --git a/src/or/transports.h b/src/or/transports.h
index 0bd96e0950..d304dcd485 100644
--- a/src/or/transports.h
+++ b/src/or/transports.h
@@ -66,6 +66,9 @@ char *pt_stringify_socks_args(const smartlist_t *socks_args);
char *pt_get_socks_args_for_proxy_addrport(const tor_addr_t *addr,
uint16_t port);
+char *tor_escape_str_for_pt_args(const char *string,
+ const char *chars_to_escape);
+
#ifdef PT_PRIVATE
/** State of the managed proxy configuration protocol. */
enum pt_proto_state {
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 4d171d5d0e..a6fb0ce846 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -15,6 +15,7 @@
#include "common/buffers.h"
#include "or/config.h"
#include "or/control.h"
+#include "or/transports.h"
#include "lib/crypt_ops/crypto_rand.h"
#include "test/test.h"
#include "lib/memarea/memarea.h"