commit 22977b7c1dd6b693237fb3fed1cd6f88ec71cb21 Author: Nick Mathewson nickm@torproject.org Date: Mon Jul 15 12:26:55 2013 -0400
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. --- src/common/util.c | 12 +++++------- src/common/util.h | 7 +++++-- src/test/test_util.c | 5 ++--- 3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/src/common/util.c b/src/common/util.c index 95dea4b..a5e41bf 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 ca6ce7c..ad75266 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 603eded..d5ce1eb 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);
tor-commits@lists.torproject.org