The FreeRADIUS server
$Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
|
Various miscellaneous utility functions. More...
#include <freeradius-devel/build.h>
#include <freeradius-devel/missing.h>
#include <freeradius-devel/util/print.h>
#include <freeradius-devel/util/talloc.h>
#include <freeradius-devel/util/time.h>
#include <signal.h>
Go to the source code of this file.
Macros | |
#define | fr_bskip_whitespace(_p, _e) while((_p < _e) && isspace((uint8_t)*(_p))) _p++ |
Skip whitespace, stopping at end ('\t', '\n', '\v', '\f', '\r', ' ') More... | |
#define | fr_skip_not_whitespace(_p) while(*_p && !isspace((uint8_t)*(_p))) _p++ |
Skip everything that's not whitespace ('\t', '\n', '\v', '\f', '\r', ' ') More... | |
#define | fr_skip_whitespace(_p) while(isspace((uint8_t)*(_p))) _p++ |
Skip whitespace ('\t', '\n', '\v', '\f', '\r', ' ') More... | |
#define | fr_zero_whitespace(_p) while (isspace((uint8_t) *_p)) *(_p++) = '\0' |
Zero out any whitespace with nul bytes. More... | |
#define | VERIFY_ALL_TALLOC |
Typedefs | |
typedef int8_t(* | fr_cmp_t) (void const *a, void const *b) |
typedef void(* | fr_free_t) (void *) |
Functions | |
int | fr_blocking (int fd) |
int | fr_digest_cmp (uint8_t const *a, uint8_t const *b, size_t length) |
Do a comparison of two authentication digests by comparing the FULL data. More... | |
int | fr_nonblock (int fd) |
int8_t | fr_pointer_cmp (void const *a, void const *b) |
Compares two pointers. More... | |
void | fr_quick_sort (void const *to_sort[], int min_idx, int max_idx, fr_cmp_t cmp) |
Quick sort an array of pointers using a comparator. More... | |
int | fr_set_signal (int sig, sig_t func) |
Sets a signal handler using sigaction if available, else signal. More... | |
size_t | fr_snprint_uint128 (char *out, size_t outlen, uint128_t const num) |
Write 128bit unsigned integer to buffer. More... | |
int | fr_strtoll (int64_t *out, char **end, char const *value) |
Consume the integer (or hex) portion of a value string. More... | |
int | fr_strtoull (uint64_t *out, char **end, char const *value) |
Consume the integer (or hex) portion of a value string. More... | |
char * | fr_tolower (char *str) |
char * | fr_trim (char const *str, size_t size) |
Trim whitespace from the end of a string. More... | |
int | fr_unset_signal (int sig) |
Uninstall a signal for a specific handler. More... | |
ssize_t | fr_utf8_to_ucs2 (uint8_t *out, size_t outlen, char const *in, size_t inlen) |
Convert UTF8 string to UCS2 encoding. More... | |
static bool | is_integer (char const *value) |
Check whether the string is all numbers. More... | |
static bool | is_printable (void const *value, size_t len) |
Check whether the string is made up of printable UTF8 chars. More... | |
static bool | is_whitespace (char const *value) |
Check whether the string is all whitespace. More... | |
static bool | is_zero (char const *value) |
Check whether the string is all zeros. More... | |
int | rad_lockfd (int fd, int lock_len) |
int | rad_lockfd_nonblock (int fd, int lock_len) |
int | rad_unlockfd (int fd, int lock_len) |
Various miscellaneous utility functions.
Definition in file misc.h.
int fr_blocking | ( | int | fd | ) |
Do a comparison of two authentication digests by comparing the FULL data.
Otherwise, the server can be subject to timing attacks.
http://www.cs.rice.edu/~dwallach/pub/crosby-timing2009.pdf
Definition at line 472 of file misc.c.
int fr_nonblock | ( | int | fd | ) |
int8_t fr_pointer_cmp | ( | void const * | a, |
void const * | b | ||
) |
void fr_quick_sort | ( | void const * | to_sort[], |
int | start, | ||
int | end, | ||
fr_cmp_t | cmp | ||
) |
Quick sort an array of pointers using a comparator.
to_sort | array of pointers to sort. |
start | the lowest index (usually 0). |
end | the length of the array. |
cmp | the comparison function to use to sort the array elements. |
Definition at line 429 of file misc.c.
int fr_set_signal | ( | int | sig, |
sig_t | func | ||
) |
int fr_strtoll | ( | int64_t * | out, |
char ** | end, | ||
char const * | value | ||
) |
Consume the integer (or hex) portion of a value string.
Allows integer or hex representations of integers (but not octal, as octal is deemed to be confusing).
[out] | out | Result of parsing string as signed 64bit integer. |
[out] | end | pointer to the first non numeric char. |
[in] | value | string to parse. |
int fr_strtoull | ( | uint64_t * | out, |
char ** | end, | ||
char const * | value | ||
) |
Consume the integer (or hex) portion of a value string.
Allows integer or hex representations of integers (but not octal, as octal is deemed to be confusing).
[out] | out | Result of parsing string as unsigned 64bit integer. |
[out] | end | pointer to the first non numeric char. |
[in] | value | string to parse. |
char* fr_tolower | ( | char * | str | ) |
char* fr_trim | ( | char const * | str, |
size_t | size | ||
) |
int fr_unset_signal | ( | int | sig | ) |
Convert UTF8 string to UCS2 encoding.
[out] | out | Where to write the ucs2 string. |
[in] | outlen | Size of output buffer. |
[in] | in | UTF8 string to convert. |
[in] | inlen | length of UTF8 string. |
Definition at line 315 of file misc.c.
|
inlinestatic |
Check whether the string is made up of printable UTF8 chars.
value | to check. |
len | of value. |
Definition at line 107 of file misc.h.
|
inlinestatic |
|
inlinestatic |
int rad_lockfd | ( | int | fd, |
int | lock_len | ||
) |
int rad_lockfd_nonblock | ( | int | fd, |
int | lock_len | ||
) |