diff options
author | Nick Mathewson <nickm@torproject.org> | 2012-06-26 11:03:32 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2012-06-26 11:03:32 -0400 |
commit | 05dd0a9cd9055f0d7cc847ea0c9b5181b9c20057 (patch) | |
tree | f2ef8c169882b23932c67afc8684e0006b2c283b /src/common | |
parent | 4050800251c77d4fc059c51a268abe02c3d4e9a0 (diff) | |
parent | 5fad3dc36b3aad7f2ea13e56d838c3eb37fb029d (diff) | |
download | tor-05dd0a9cd9055f0d7cc847ea0c9b5181b9c20057.tar.gz tor-05dd0a9cd9055f0d7cc847ea0c9b5181b9c20057.zip |
Merge remote-tracking branch 'origin/maint-0.2.3'
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/util.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/common/util.c b/src/common/util.c index 008e26a20c..d63aceabee 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -3357,7 +3357,7 @@ format_helper_exit_status(unsigned char child_state, int saved_errno, *cur++ = '\n'; *cur++ = '\0'; - res = cur - hex_errno - 1; + res = (int)(cur - hex_errno - 1); goto done; @@ -3897,13 +3897,26 @@ tor_get_exit_code(const process_handle_t *process_handle, return PROCESS_EXIT_EXITED; } +/** Helper: return the number of characters in <b>s</b> preceding the first + * occurence of <b>ch</b>. If <b>ch</b> does not occur in <b>s</b>, return + * the length of <b>s</b>. Should be equivalent to strspn(s, "ch"). */ +static INLINE size_t +str_num_before(const char *s, char ch) +{ + const char *cp = strchr(s, ch); + if (cp) + return cp - s; + else + return strlen(s); +} + /** Return non-zero iff getenv would consider <b>s1</b> and <b>s2</b> * to have the same name as strings in a process's environment. */ int environment_variable_names_equal(const char *s1, const char *s2) { - size_t s1_name_len = strcspn(s1, "="); - size_t s2_name_len = strcspn(s2, "="); + size_t s1_name_len = str_num_before(s1, '='); + size_t s2_name_len = str_num_before(s2, '='); return (s1_name_len == s2_name_len && tor_memeq(s1, s2, s1_name_len)); @@ -3978,7 +3991,7 @@ process_environment_make(struct smartlist_t *env_vars) for (i = 0; i < n_env_vars; ++i) { const char *s = smartlist_get(env_vars_sorted, i); size_t slen = strlen(s); - size_t s_name_len = strcspn(s, "="); + size_t s_name_len = str_num_before(s, '='); if (s_name_len == slen) { log_warn(LD_GENERAL, |