From 22977b7c1dd6b693237fb3fed1cd6f88ec71cb21 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 15 Jul 2013 12:26:55 -0400 Subject: [PATCH] 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 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); * n */ #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);