summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-07-15 12:26:55 -0400
committerNick Mathewson <nickm@torproject.org>2013-07-15 12:26:55 -0400
commit22977b7c1dd6b693237fb3fed1cd6f88ec71cb21 (patch)
tree1e0432725155ce4f4e11823d0265cecc79a03226
parent449b2b7c58e5dd5b33941a5142524a66c64c98ec (diff)
downloadtor-22977b7c1dd6b693237fb3fed1cd6f88ec71cb21.tar.gz
tor-22977b7c1dd6b693237fb3fed1cd6f88ec71cb21.zip
Expose format_hex_number_..., and rename it to ..._sigsafe().
There are some other places in the code that will want a signal-safe way to format numbers, so it shouldn't be static to util.c.
-rw-r--r--src/common/util.c12
-rw-r--r--src/common/util.h7
-rw-r--r--src/test/test_util.c5
3 files changed, 12 insertions, 12 deletions
diff --git a/src/common/util.c b/src/common/util.c
index 95dea4b69c..a5e41bf256 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -3402,9 +3402,8 @@ tor_join_win_cmdline(const char *argv[])
* function; it's designed to be used in code paths where you can't call
* arbitrary C functions.
*/
-STATIC int
-format_hex_number_for_helper_exit_status(unsigned int x, char *buf,
- int max_len)
+int
+format_hex_number_sigsafe(unsigned int x, char *buf, int max_len)
{
int len;
unsigned int tmp;
@@ -3490,8 +3489,8 @@ format_helper_exit_status(unsigned char child_state, int saved_errno,
cur = hex_errno;
/* Emit child_state */
- written = format_hex_number_for_helper_exit_status(child_state,
- cur, left);
+ written = format_hex_number_sigsafe(child_state, cur, left);
+
if (written <= 0)
goto err;
@@ -3520,8 +3519,7 @@ format_helper_exit_status(unsigned char child_state, int saved_errno,
}
/* Emit unsigned_errno */
- written = format_hex_number_for_helper_exit_status(unsigned_errno,
- cur, left);
+ written = format_hex_number_sigsafe(unsigned_errno, cur, left);
if (written <= 0)
goto err;
diff --git a/src/common/util.h b/src/common/util.h
index ca6ce7c4c8..ad75266587 100644
--- a/src/common/util.h
+++ b/src/common/util.h
@@ -518,11 +518,12 @@ int32_t tor_weak_random_range(tor_weak_rng_t *rng, int32_t top);
* <b>n</b> */
#define tor_weak_random_one_in_n(rng, n) (0==tor_weak_random_range((rng),(n)))
+int format_hex_number_sigsafe(unsigned int x, char *buf, int max_len);
+
#ifdef UTIL_PRIVATE
/* Prototypes for private functions only used by util.c (and unit tests) */
-STATIC int format_hex_number_for_helper_exit_status(unsigned int x, char *buf,
- int max_len);
+#ifndef _WIN32
STATIC int format_helper_exit_status(unsigned char child_state,
int saved_errno, char *hex_errno);
@@ -532,6 +533,8 @@ STATIC int format_helper_exit_status(unsigned char child_state,
1 + sizeof(int) * 2 + 1)
#endif
+#endif
+
const char *libor_get_digests(void);
#endif
diff --git a/src/test/test_util.c b/src/test/test_util.c
index 603eded97d..d5ce1eb778 100644
--- a/src/test/test_util.c
+++ b/src/test/test_util.c
@@ -2627,7 +2627,7 @@ test_util_spawn_background_partial_read(void *ptr)
}
/**
- * Test for format_hex_number_for_helper_exit_status()
+ * Test for format_hex_number_sigsafe()
*/
static void
@@ -2653,8 +2653,7 @@ test_util_format_hex_number(void *ptr)
(void)ptr;
for (i = 0; test_data[i].str != NULL; ++i) {
- len = format_hex_number_for_helper_exit_status(test_data[i].x,
- buf, HEX_ERRNO_SIZE);
+ len = format_hex_number_sigsafe(test_data[i].x, buf, HEX_ERRNO_SIZE);
test_neq(len, 0);
buf[len] = '\0';
test_streq(buf, test_data[i].str);