mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-11 05:33:47 +01:00
Add a mem_is_zero function (I think we will need this) and a STRUCT_OFFSET macro (we already need this).
svn:r6810
This commit is contained in:
parent
1c266c3352
commit
35960e1162
@ -428,13 +428,30 @@ find_whitespace(const char *s)
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Return true iff the 'len' bytes at 'mem' are all zero. */
|
||||||
|
int tor_mem_is_zero(const char *mem, size_t len)
|
||||||
|
{
|
||||||
|
static const char ZERO[] = {
|
||||||
|
0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
|
||||||
|
};
|
||||||
|
while (len >= sizeof(ZERO)) {
|
||||||
|
if (memcmp(mem, ZERO, sizeof(ZERO)))
|
||||||
|
return 0;
|
||||||
|
len -= sizeof(ZERO);
|
||||||
|
mem += sizeof(ZERO);
|
||||||
|
}
|
||||||
|
/* Deal with leftover bytes. */
|
||||||
|
if (len)
|
||||||
|
return ! memcmp(mem, ZERO, len);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/** Return true iff the DIGEST_LEN bytes in digest are all zero. */
|
/** Return true iff the DIGEST_LEN bytes in digest are all zero. */
|
||||||
int
|
int
|
||||||
tor_digest_is_zero(const char *digest)
|
tor_digest_is_zero(const char *digest)
|
||||||
{
|
{
|
||||||
static char ZERO_DIGEST[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
|
return tor_mem_is_zero(digest, DIGEST_LEN);
|
||||||
|
|
||||||
return !memcmp(digest, ZERO_DIGEST, DIGEST_LEN);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define CHECK_STRTOX_RESULT() \
|
#define CHECK_STRTOX_RESULT() \
|
||||||
|
@ -88,6 +88,10 @@ extern int dmalloc_free(const char *file, const int line, void *pnt,
|
|||||||
#define tor_strndup(s, n) _tor_strndup(s, n DMALLOC_ARGS)
|
#define tor_strndup(s, n) _tor_strndup(s, n DMALLOC_ARGS)
|
||||||
#define tor_memdup(s, n) _tor_memdup(s, n DMALLOC_ARGS)
|
#define tor_memdup(s, n) _tor_memdup(s, n DMALLOC_ARGS)
|
||||||
|
|
||||||
|
/** Return the offset of <b>member</b> within the type <b>tp</b>, in bytes */
|
||||||
|
#define STRUCT_OFFSET(tp, member) \
|
||||||
|
((off_t) (((char*)&((tp*)0)->member)-(char*)0))
|
||||||
|
|
||||||
/* String manipulation */
|
/* String manipulation */
|
||||||
#define HEX_CHARACTERS "0123456789ABCDEFabcdef"
|
#define HEX_CHARACTERS "0123456789ABCDEFabcdef"
|
||||||
void tor_strlower(char *s);
|
void tor_strlower(char *s);
|
||||||
@ -114,6 +118,7 @@ const char *hex_str(const char *from, size_t fromlen);
|
|||||||
const char *eat_whitespace(const char *s);
|
const char *eat_whitespace(const char *s);
|
||||||
const char *eat_whitespace_no_nl(const char *s);
|
const char *eat_whitespace_no_nl(const char *s);
|
||||||
const char *find_whitespace(const char *s);
|
const char *find_whitespace(const char *s);
|
||||||
|
int tor_mem_is_zero(const char *mem, size_t len);
|
||||||
int tor_digest_is_zero(const char *digest);
|
int tor_digest_is_zero(const char *digest);
|
||||||
char *esc_for_log(const char *string);
|
char *esc_for_log(const char *string);
|
||||||
const char *escaped(const char *string);
|
const char *escaped(const char *string);
|
||||||
|
Loading…
Reference in New Issue
Block a user