Browse Source

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.
Nick Mathewson 11 years ago
parent
commit
22977b7c1d
3 changed files with 12 additions and 12 deletions
  1. 5 7
      src/common/util.c
  2. 5 2
      src/common/util.h
  3. 2 3
      src/test/test_util.c

+ 5 - 7
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;

+ 5 - 2
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

+ 2 - 3
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);