mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Merge remote-tracking branch 'sebastian/pure_removal'
This commit is contained in:
commit
cb8059b42d
7
changes/pure_removal
Normal file
7
changes/pure_removal
Normal file
@ -0,0 +1,7 @@
|
||||
o Code simplifications and refactorings:
|
||||
- Remove the pure attribute from all functions that used it previously.
|
||||
In many cases this we assigned it incorrectly, because the functions
|
||||
might assert or call impure functions, and we don't have evidence
|
||||
that keeping the pure attribute is worthwhile. Implements changes
|
||||
suggested in ticket 4421.
|
||||
|
@ -149,7 +149,7 @@ int tor_addr_compare_masked(const tor_addr_t *addr1, const tor_addr_t *addr2,
|
||||
|
||||
unsigned int tor_addr_hash(const tor_addr_t *addr);
|
||||
int tor_addr_is_v4(const tor_addr_t *addr);
|
||||
int tor_addr_is_internal(const tor_addr_t *ip, int for_listening) ATTR_PURE;
|
||||
int tor_addr_is_internal(const tor_addr_t *ip, int for_listening);
|
||||
|
||||
/** Longest length that can be required for a reverse lookup name. */
|
||||
/* 32 nybbles, 32 dots, 8 characters of "ip6.arpa", 1 NUL: 73 characters. */
|
||||
@ -185,7 +185,7 @@ int tor_addr_port_split(int severity, const char *addrport,
|
||||
char **address_out, uint16_t *port_out);
|
||||
|
||||
/* IPv4 helpers */
|
||||
int is_internal_IP(uint32_t ip, int for_listening) ATTR_PURE;
|
||||
int is_internal_IP(uint32_t ip, int for_listening);
|
||||
int addr_port_lookup(int severity, const char *addrport, char **address,
|
||||
uint32_t *addr, uint16_t *port_out);
|
||||
int parse_port_range(const char *port, uint16_t *port_min_out,
|
||||
|
@ -135,7 +135,6 @@ extern INLINE double U64_TO_DBL(uint64_t x) {
|
||||
/* GCC has several useful attributes. */
|
||||
#if defined(__GNUC__) && __GNUC__ >= 3
|
||||
#define ATTR_NORETURN __attribute__((noreturn))
|
||||
#define ATTR_PURE __attribute__((pure))
|
||||
#define ATTR_CONST __attribute__((const))
|
||||
#define ATTR_MALLOC __attribute__((malloc))
|
||||
#define ATTR_NORETURN __attribute__((noreturn))
|
||||
@ -168,7 +167,6 @@ extern INLINE double U64_TO_DBL(uint64_t x) {
|
||||
#define PREDICT_UNLIKELY(exp) __builtin_expect(!!(exp), 0)
|
||||
#else
|
||||
#define ATTR_NORETURN
|
||||
#define ATTR_PURE
|
||||
#define ATTR_CONST
|
||||
#define ATTR_MALLOC
|
||||
#define ATTR_NORETURN
|
||||
@ -271,9 +269,9 @@ int tor_asprintf(char **strp, const char *fmt, ...)
|
||||
int tor_vasprintf(char **strp, const char *fmt, va_list args);
|
||||
|
||||
const void *tor_memmem(const void *haystack, size_t hlen, const void *needle,
|
||||
size_t nlen) ATTR_PURE ATTR_NONNULL((1,3));
|
||||
size_t nlen) ATTR_NONNULL((1,3));
|
||||
static const void *tor_memstr(const void *haystack, size_t hlen,
|
||||
const char *needle) ATTR_PURE ATTR_NONNULL((1,3));
|
||||
const char *needle) ATTR_NONNULL((1,3));
|
||||
static INLINE const void *
|
||||
tor_memstr(const void *haystack, size_t hlen, const char *needle)
|
||||
{
|
||||
@ -546,9 +544,9 @@ long tor_weak_random(void);
|
||||
/* ===== OS compatibility */
|
||||
const char *get_uname(void);
|
||||
|
||||
uint16_t get_uint16(const void *cp) ATTR_PURE ATTR_NONNULL((1));
|
||||
uint32_t get_uint32(const void *cp) ATTR_PURE ATTR_NONNULL((1));
|
||||
uint64_t get_uint64(const void *cp) ATTR_PURE ATTR_NONNULL((1));
|
||||
uint16_t get_uint16(const void *cp) ATTR_NONNULL((1));
|
||||
uint32_t get_uint32(const void *cp) ATTR_NONNULL((1));
|
||||
uint64_t get_uint64(const void *cp) ATTR_NONNULL((1));
|
||||
void set_uint16(void *cp, uint16_t v) ATTR_NONNULL((1));
|
||||
void set_uint32(void *cp, uint32_t v) ATTR_NONNULL((1));
|
||||
void set_uint64(void *cp, uint64_t v) ATTR_NONNULL((1));
|
||||
|
@ -35,19 +35,14 @@ void smartlist_remove(smartlist_t *sl, const void *element);
|
||||
void *smartlist_pop_last(smartlist_t *sl);
|
||||
void smartlist_reverse(smartlist_t *sl);
|
||||
void smartlist_string_remove(smartlist_t *sl, const char *element);
|
||||
int smartlist_isin(const smartlist_t *sl, const void *element) ATTR_PURE;
|
||||
int smartlist_string_isin(const smartlist_t *sl, const char *element)
|
||||
ATTR_PURE;
|
||||
int smartlist_string_pos(const smartlist_t *, const char *elt) ATTR_PURE;
|
||||
int smartlist_string_isin_case(const smartlist_t *sl, const char *element)
|
||||
ATTR_PURE;
|
||||
int smartlist_string_num_isin(const smartlist_t *sl, int num) ATTR_PURE;
|
||||
int smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2)
|
||||
ATTR_PURE;
|
||||
int smartlist_digest_isin(const smartlist_t *sl, const char *element)
|
||||
ATTR_PURE;
|
||||
int smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2)
|
||||
ATTR_PURE;
|
||||
int smartlist_isin(const smartlist_t *sl, const void *element);
|
||||
int smartlist_string_isin(const smartlist_t *sl, const char *element);
|
||||
int smartlist_string_pos(const smartlist_t *, const char *elt);
|
||||
int smartlist_string_isin_case(const smartlist_t *sl, const char *element);
|
||||
int smartlist_string_num_isin(const smartlist_t *sl, int num);
|
||||
int smartlist_strings_eq(const smartlist_t *sl1, const smartlist_t *sl2);
|
||||
int smartlist_digest_isin(const smartlist_t *sl, const char *element);
|
||||
int smartlist_overlap(const smartlist_t *sl1, const smartlist_t *sl2);
|
||||
void smartlist_intersect(smartlist_t *sl1, const smartlist_t *sl2);
|
||||
void smartlist_subtract(smartlist_t *sl1, const smartlist_t *sl2);
|
||||
|
||||
@ -55,14 +50,14 @@ void smartlist_subtract(smartlist_t *sl1, const smartlist_t *sl2);
|
||||
#ifdef DEBUG_SMARTLIST
|
||||
/** Return the number of items in sl.
|
||||
*/
|
||||
static INLINE int smartlist_len(const smartlist_t *sl) ATTR_PURE;
|
||||
static INLINE int smartlist_len(const smartlist_t *sl);
|
||||
static INLINE int smartlist_len(const smartlist_t *sl) {
|
||||
tor_assert(sl);
|
||||
return (sl)->num_used;
|
||||
}
|
||||
/** Return the <b>idx</b>th element of sl.
|
||||
*/
|
||||
static INLINE void *smartlist_get(const smartlist_t *sl, int idx) ATTR_PURE;
|
||||
static INLINE void *smartlist_get(const smartlist_t *sl, int idx);
|
||||
static INLINE void *smartlist_get(const smartlist_t *sl, int idx) {
|
||||
tor_assert(sl);
|
||||
tor_assert(idx>=0);
|
||||
@ -114,8 +109,7 @@ void smartlist_uniq_strings(smartlist_t *sl);
|
||||
void smartlist_uniq_digests(smartlist_t *sl);
|
||||
void smartlist_uniq_digests256(smartlist_t *sl);
|
||||
void *smartlist_bsearch(smartlist_t *sl, const void *key,
|
||||
int (*compare)(const void *key, const void **member))
|
||||
ATTR_PURE;
|
||||
int (*compare)(const void *key, const void **member));
|
||||
int smartlist_bsearch_idx(const smartlist_t *sl, const void *key,
|
||||
int (*compare)(const void *key, const void **member),
|
||||
int *found_out);
|
||||
|
@ -173,19 +173,15 @@ int n_bits_set_u8(uint8_t v);
|
||||
#define HEX_CHARACTERS "0123456789ABCDEFabcdef"
|
||||
void tor_strlower(char *s) ATTR_NONNULL((1));
|
||||
void tor_strupper(char *s) ATTR_NONNULL((1));
|
||||
int tor_strisprint(const char *s) ATTR_PURE ATTR_NONNULL((1));
|
||||
int tor_strisnonupper(const char *s) ATTR_PURE ATTR_NONNULL((1));
|
||||
int strcmp_opt(const char *s1, const char *s2) ATTR_PURE;
|
||||
int strcmpstart(const char *s1, const char *s2) ATTR_PURE ATTR_NONNULL((1,2));
|
||||
int strcmp_len(const char *s1, const char *s2, size_t len)
|
||||
ATTR_PURE ATTR_NONNULL((1,2));
|
||||
int strcasecmpstart(const char *s1, const char *s2)
|
||||
ATTR_PURE ATTR_NONNULL((1,2));
|
||||
int strcmpend(const char *s1, const char *s2) ATTR_PURE ATTR_NONNULL((1,2));
|
||||
int strcasecmpend(const char *s1, const char *s2)
|
||||
ATTR_PURE ATTR_NONNULL((1,2));
|
||||
int fast_memcmpstart(const void *mem, size_t memlen,
|
||||
const char *prefix) ATTR_PURE;
|
||||
int tor_strisprint(const char *s) ATTR_NONNULL((1));
|
||||
int tor_strisnonupper(const char *s) ATTR_NONNULL((1));
|
||||
int strcmp_opt(const char *s1, const char *s2);
|
||||
int strcmpstart(const char *s1, const char *s2) ATTR_NONNULL((1,2));
|
||||
int strcmp_len(const char *s1, const char *s2, size_t len) ATTR_NONNULL((1,2));
|
||||
int strcasecmpstart(const char *s1, const char *s2) ATTR_NONNULL((1,2));
|
||||
int strcmpend(const char *s1, const char *s2) ATTR_NONNULL((1,2));
|
||||
int strcasecmpend(const char *s1, const char *s2) ATTR_NONNULL((1,2));
|
||||
int fast_memcmpstart(const void *mem, size_t memlen, const char *prefix);
|
||||
|
||||
void tor_strstrip(char *s, const char *strip) ATTR_NONNULL((1,2));
|
||||
long tor_parse_long(const char *s, int base, long min,
|
||||
@ -197,19 +193,19 @@ double tor_parse_double(const char *s, double min, double max, int *ok,
|
||||
uint64_t tor_parse_uint64(const char *s, int base, uint64_t min,
|
||||
uint64_t max, int *ok, char **next);
|
||||
const char *hex_str(const char *from, size_t fromlen) ATTR_NONNULL((1));
|
||||
const char *eat_whitespace(const char *s) ATTR_PURE;
|
||||
const char *eat_whitespace_eos(const char *s, const char *eos) ATTR_PURE;
|
||||
const char *eat_whitespace_no_nl(const char *s) ATTR_PURE;
|
||||
const char *eat_whitespace_eos_no_nl(const char *s, const char *eos) ATTR_PURE;
|
||||
const char *find_whitespace(const char *s) ATTR_PURE;
|
||||
const char *find_whitespace_eos(const char *s, const char *eos) ATTR_PURE;
|
||||
const char *find_str_at_start_of_line(const char *haystack, const char *needle)
|
||||
ATTR_PURE;
|
||||
const char *eat_whitespace(const char *s);
|
||||
const char *eat_whitespace_eos(const char *s, const char *eos);
|
||||
const char *eat_whitespace_no_nl(const char *s);
|
||||
const char *eat_whitespace_eos_no_nl(const char *s, const char *eos);
|
||||
const char *find_whitespace(const char *s);
|
||||
const char *find_whitespace_eos(const char *s, const char *eos);
|
||||
const char *find_str_at_start_of_line(const char *haystack,
|
||||
const char *needle);
|
||||
int string_is_C_identifier(const char *string);
|
||||
|
||||
int tor_mem_is_zero(const char *mem, size_t len) ATTR_PURE;
|
||||
int tor_digest_is_zero(const char *digest) ATTR_PURE;
|
||||
int tor_digest256_is_zero(const char *digest) ATTR_PURE;
|
||||
int tor_mem_is_zero(const char *mem, size_t len);
|
||||
int tor_digest_is_zero(const char *digest);
|
||||
int tor_digest256_is_zero(const char *digest);
|
||||
char *esc_for_log(const char *string) ATTR_MALLOC;
|
||||
const char *escaped(const char *string);
|
||||
struct smartlist_t;
|
||||
@ -349,7 +345,7 @@ const char *parse_config_line_from_str(const char *line,
|
||||
char **key_out, char **value_out);
|
||||
char *expand_filename(const char *filename);
|
||||
struct smartlist_t *tor_listdir(const char *dirname);
|
||||
int path_is_relative(const char *filename) ATTR_PURE;
|
||||
int path_is_relative(const char *filename);
|
||||
|
||||
/* Process helpers */
|
||||
void start_daemon(void);
|
||||
|
@ -29,7 +29,7 @@ setopt_err_t options_trial_assign(config_line_t *list, int use_defaults,
|
||||
int clear_first, char **msg);
|
||||
int resolve_my_address(int warn_severity, const or_options_t *options,
|
||||
uint32_t *addr, char **hostname_out);
|
||||
int is_local_addr(const tor_addr_t *addr) ATTR_PURE;
|
||||
int is_local_addr(const tor_addr_t *addr);
|
||||
void options_init(or_options_t *options);
|
||||
char *options_dump(const or_options_t *options, int minimal);
|
||||
int options_init_from_torrc(int argc, char **argv);
|
||||
|
Loading…
Reference in New Issue
Block a user