The FreeRADIUS server $Id: f3670dba8951ca10eb4948feb3dc3db9423a334f $
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
unit_test_attribute.c File Reference

Provides a test harness for various internal libraries and functions. More...

#include <freeradius-devel/io/test_point.h>
#include <freeradius-devel/server/cf_parse.h>
#include <freeradius-devel/server/command.h>
#include <freeradius-devel/server/dependency.h>
#include <freeradius-devel/server/dl_module.h>
#include <freeradius-devel/server/log.h>
#include <freeradius-devel/server/map.h>
#include <freeradius-devel/unlang/base.h>
#include <freeradius-devel/unlang/xlat_func.h>
#include <freeradius-devel/util/lsan.h>
#include <freeradius-devel/util/atexit.h>
#include <freeradius-devel/util/base64.h>
#include <freeradius-devel/util/calc.h>
#include <freeradius-devel/util/conf.h>
#include <freeradius-devel/util/dns.h>
#include <freeradius-devel/util/file.h>
#include <freeradius-devel/util/skip.h>
#include <freeradius-devel/util/pair_legacy.h>
#include <freeradius-devel/util/sha1.h>
#include <freeradius-devel/util/syserror.h>
#include <freeradius-devel/util/dict_priv.h>
#include <assert.h>
#include <fcntl.h>
#include <libgen.h>
#include <sys/file.h>
#include <sys/stat.h>
#include <sys/wait.h>
+ Include dependency graph for unit_test_attribute.c:

Go to the source code of this file.

Data Structures

struct  command_config_t
 Configuration parameters passed to command functions. More...
 
struct  command_entry_t
 
struct  command_file_ctx_t
 
struct  command_line_range_t
 
struct  command_result_t
 
union  command_result_t.__unnamed8__
 

Macros

#define ATTR_COMMON
 
#define BUFF_POISON_END   0
 
#define BUFF_POISON_START   0
 
#define CLEAR_TEST_POINT(_cc)
 
#define COMMAND_OUTPUT_MAX   8192
 
#define DEFAULT_BUFFER_SIZE   1024
 Default buffer size for a command_file_ctx_t.
 
#define EXIT_WITH_FAILURE
 
#define EXIT_WITH_FAILURE
 
#define POISONED_BUFFER_END(_p)   ((_p) + BUFF_POISON_START + (talloc_array_length(_p) - (BUFF_POISON_START + BUFF_POISON_END)))
 
#define POISONED_BUFFER_START(_p)   ((_p) + BUFF_POISON_START)
 
#define RETURN_COMMAND_ERROR()
 
#define RETURN_EXIT(_ret)
 
#define RETURN_MISMATCH(_len)
 
#define RETURN_NOOP(_len)
 
#define RETURN_OK(_len)
 
#define RETURN_OK_WITH_ERROR()
 
#define RETURN_PARSE_ERROR(_offset)
 
#define RETURN_SKIP_FILE()
 
#define SBUFF_RETURN_OK_WITH_ERROR(_function, ...)
 

Typedefs

typedef size_t(* command_func_t) (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 Command to execute.
 
typedef ssize_t(* command_tmpl_rule_func) (TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)
 Callback for a tmpl rule parser.
 
typedef struct request_s request_t
 

Enumerations

enum  command_rcode_t {
  RESULT_OK = 0 ,
  RESULT_NOOP ,
  RESULT_SKIP_FILE ,
  RESULT_PARSE_ERROR ,
  RESULT_COMMAND_ERROR ,
  RESULT_MISMATCH ,
  RESULT_EXIT
}
 

Functions

static int _command_ctx_free (command_file_ctx_t *cc)
 
static size_t command_allow_unresolved (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Determine if unresolved attributes are allowed.
 
static size_t command_attr_children (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Print attribute information.
 
static size_t command_attr_flags (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Print attribute information.
 
static size_t command_attr_name (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Print attribute information.
 
static size_t command_attr_oid (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Print attribute information.
 
static size_t command_attr_type (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Print attribute information.
 
static size_t command_calc (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Perform calculations.
 
static size_t command_calc_nary (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Perform calculations on multi-valued ops.
 
static size_t command_cast (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Perform casting.
 
static size_t command_cd (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Change the working directory.
 
static size_t command_clear (command_result_t *result, UNUSED command_file_ctx_t *cc, char *data, size_t UNUSED data_used, UNUSED char *in, UNUSED size_t inlen)
 
static size_t command_comment (UNUSED command_result_t *result, UNUSED command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, UNUSED char *in, UNUSED size_t inlen)
 Placeholder function for comments.
 
static size_t command_condition_normalise (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Parse and reprint a condition.
 
static size_t command_count (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, UNUSED char *in, UNUSED size_t inlen)
 
static command_file_ctx_t * command_ctx_alloc (TALLOC_CTX *ctx, command_config_t const *config, char const *path, char const *filename)
 
static void command_ctx_reset (command_file_ctx_t *cc, TALLOC_CTX *ctx)
 
static size_t command_de_encode_pair (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 Decode hex data into pairs, and then encode the pairs again.
 
static size_t command_decode_dns_label (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 
static size_t command_decode_pair (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 
static size_t command_decode_proto (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 
static size_t command_dictionary_attribute_parse (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse a dictionary attribute, writing "ok" to the data buffer is everything was ok.
 
static size_t command_dictionary_dump (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, size_t data_used, UNUSED char *in, UNUSED size_t inlen)
 Print the currently loaded dictionary.
 
static size_t command_dictionary_read (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Read a dictionary from a file, and then free it.
 
static size_t command_encode_dns_label (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 
static size_t command_encode_pair (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 
static size_t command_encode_proto (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen)
 
static size_t command_encode_raw (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Encode a RADIUS attribute writing the result to the data buffer as space separated hexits.
 
static size_t command_eof (UNUSED command_result_t *result, UNUSED command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, UNUSED char *in, UNUSED size_t inlen)
 Command eof.
 
static size_t command_exit (command_result_t *result, UNUSED command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Exit gracefully with the specified code.
 
static int command_func (UNUSED FILE *fp, UNUSED FILE *fp_err, UNUSED void *ctx, UNUSED fr_cmd_info_t const *info)
 
static size_t command_fuzzer_out (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Enable fuzzer output.
 
static size_t command_include (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Execute another test file.
 
static size_t command_load_dictionary (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 
static size_t command_match (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 Compare the data buffer to an expected value.
 
static size_t command_match_regex (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 Compare the data buffer against an expected expression.
 
static size_t command_max_buffer_size (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Artificially limit the maximum packet size.
 
static size_t command_migrate (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Set or clear migration flags.
 
static size_t command_need_feature (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Skip the test file if we're missing a particular feature.
 
static size_t command_no (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 Negate the result of a match command or any command which returns "OK".
 
static size_t command_pair (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 
static size_t command_pair_common (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, size_t inlen, bool allow_compare)
 Parse an print an attribute pair or pair list.
 
static size_t command_pair_compare (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 
static void command_print (void)
 
static size_t command_proto (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Dynamically load a protocol library.
 
static size_t command_proto_dictionary (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 
static size_t command_proto_dictionary_root (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 
static size_t command_radmin_add (command_result_t *result, command_file_ctx_t *cc, char *data, size_t UNUSED data_used, char *in, UNUSED size_t inlen)
 
static size_t command_radmin_tab (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 
static size_t command_read_file (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse a list of pairs.
 
static size_t command_returned (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, UNUSED char *in, UNUSED size_t inlen)
 
static size_t command_tmpl (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse an reprint a tmpl expansion.
 
static ssize_t command_tmpl_rule_allow_foreign (UNUSED TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)
 
static ssize_t command_tmpl_rule_allow_unknown (UNUSED TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)
 
static ssize_t command_tmpl_rule_allow_unresolved (UNUSED TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)
 
static ssize_t command_tmpl_rule_attr_parent (UNUSED TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)
 
static ssize_t command_tmpl_rule_list_def (UNUSED TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)
 
static ssize_t command_tmpl_rule_request_def (TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)
 
static size_t command_tmpl_rules (command_result_t *result, command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, size_t inlen)
 
static size_t command_touch (command_result_t *result, UNUSED command_file_ctx_t *cc, UNUSED char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Touch a file to indicate a test completed.
 
static size_t command_value_box_normalise (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 
static int command_walk (UNUSED void *ctx, fr_cmd_walk_info_t *info)
 
static size_t command_write (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 
static size_t command_xlat_argv (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse an reprint and xlat argv expansion.
 
static size_t command_xlat_expr (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse and reprint an xlat expression expansion.
 
static size_t command_xlat_normalise (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse an reprint and xlat expansion.
 
static size_t command_xlat_purify (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse, purify, and reprint an xlat expression expansion.
 
static size_t command_xlat_purify_condition (command_result_t *result, command_file_ctx_t *cc, char *data, UNUSED size_t data_used, char *in, UNUSED size_t inlen)
 Parse, purify, and reprint an xlat expression expansion.
 
static void commands_print (void)
 
static int decode_attr (char *buffer, char **endptr)
 
static size_t decode_pair (command_result_t *result, command_file_ctx_t *cc, char *data, char *in, size_t inlen, fr_pair_t **head_p, char **hex_p)
 Decode hex data into a list of pairs.
 
static int decode_vendor (char *buffer, char **endptr)
 
static fr_dict_t * dictionary_current (command_file_ctx_t *cc)
 
static int dictionary_load_common (command_result_t *result, command_file_ctx_t *cc, char const *in, char const *default_subdir)
 Common dictionary load function.
 
static int dump_fuzzer_data (int fd_dir, char const *text, uint8_t const *data, size_t data_len)
 
static ssize_t encode_data (char *p, uint8_t *output, size_t outlen)
 
static ssize_t encode_data_string (char *buffer, uint8_t *output, size_t outlen)
 
static ssize_t encode_data_tlv (char *buffer, char **endptr, uint8_t *output, size_t outlen)
 
static ssize_t encode_evs (char *buffer, uint8_t *output, size_t outlen)
 
static ssize_t encode_extended (char *buffer, uint8_t *output, size_t outlen)
 
static ssize_t encode_long_extended (char *buffer, uint8_t *output, size_t outlen)
 
static size_t encode_pair (command_result_t *result, command_file_ctx_t *cc, char *data, fr_test_point_pair_encode_t *tp, void *encode_ctx, fr_pair_list_t *head, bool truncate, char const *fuzzer_text)
 Encode a list of pairs, writing the result to the data buffer as hex.
 
static ssize_t encode_rfc (char *buffer, uint8_t *output, size_t outlen)
 
static ssize_t encode_tlv (char *buffer, uint8_t *output, size_t outlen)
 
static ssize_t encode_vsa (char *buffer, uint8_t *output, size_t outlen)
 
static void features_print (CONF_SECTION *features)
 
static int fuzzer_open_fd (command_file_ctx_t *cc, char **out, char const *base, char const *dir)
 Helper function to open a fuzzer path, and update the name / FD.
 
static size_t hex_print (char *out, size_t outlen, uint8_t const *in, size_t inlen)
 Print hex string to buffer.
 
static ssize_t hex_to_bin (uint8_t *out, size_t outlen, char *in, size_t inlen)
 
static int line_ranges_parse (TALLOC_CTX *ctx, fr_dlist_head_t *out, fr_sbuff_t *in)
 
static ssize_t load_proto_library (char const *proto_name)
 
static ssize_t load_test_point_by_command (void **symbol, char *command, char const *dflt_symbol)
 
int main (int argc, char *argv[])
 
static void mismatch_print (command_file_ctx_t *cc, char const *command, char *expected, size_t expected_len, char *got, size_t got_len, bool print_diff)
 
static size_t parse_typed_value (command_result_t *result, command_file_ctx_t *cc, fr_value_box_t *box, char const **out, char const *in, size_t inlen)
 
static int poisoned_buffer_allocate (TALLOC_CTX *ctx, uint8_t **buff, size_t size)
 Allocate a special buffer with poisoned memory regions at the start and end.
 
static int process_file (bool *exit_now, TALLOC_CTX *ctx, command_config_t const *config, const char *root_dir, char const *filename, fr_dlist_head_t *lines)
 
size_t process_line (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)
 
size_t process_line (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, UNUSED size_t inlen)
 
static int process_path (bool *exit_now, TALLOC_CTX *ctx, command_config_t const *config, const char *path)
 
static void unload_proto_library (void)
 
static void usage (char const *name)
 
static xlat_action_t xlat_test (UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, UNUSED request_t *request, UNUSED fr_value_box_list_t *in)
 

Variables

static bool allow_purify = false
 
static fr_cmd_t * command_head = NULL
 
static fr_table_num_sorted_t command_rcode_table []
 
static size_t command_rcode_table_len = NUM_ELEMENTS(command_rcode_table)
 
static fr_table_ptr_sorted_t commands []
 
static size_t commands_len = NUM_ELEMENTS(commands)
 
static dl_t * dl = NULL
 
static dl_loader_t * dl_loader = NULL
 
static fr_event_list_t * el = NULL
 
static char const * fail_file = ""
 
static char const hextab [] = "0123456789abcdef"
 
static char proto_name_prev [128] = {}
 
static char const * receipt_dir = NULL
 
static char const * receipt_file = NULL
 
static const fr_token_t token2op [SBUFF_CHAR_CLASS]
 
static char const * write_filename = NULL
 
static FILE * write_fp = NULL
 
static xlat_arg_parser_t const xlat_test_args []
 
static xlat_arg_parser_t const xlat_test_no_args []
 

Detailed Description

Provides a test harness for various internal libraries and functions.

Id
92a6512b8ca27c0aadaf836c89b5e59e6a868100

Definition in file unit_test_attribute.c.


Data Structure Documentation

◆ command_config_t

struct command_config_t

Configuration parameters passed to command functions.

Definition at line 190 of file unit_test_attribute.c.

+ Collaboration diagram for command_config_t:
Data Fields
char const * confdir
fr_dict_t * dict Dictionary to "reset" to.
char const * dict_dir
fr_dict_gctx_t const * dict_gctx Dictionary gctx to "reset" to.
CONF_SECTION * features Enabled features.
char const * fuzzer_base_dir Base directory of where to write fuzzer files, from '-F'.

◆ command_entry_t

struct command_entry_t

Definition at line 244 of file unit_test_attribute.c.

+ Collaboration diagram for command_entry_t:
Data Fields
char const * description
command_func_t func
char const * usage

◆ command_file_ctx_t

struct command_file_ctx_t

Definition at line 199 of file unit_test_attribute.c.

+ Collaboration diagram for command_file_ctx_t:
Data Fields
uint8_t * buffer Temporary resizable buffer we use for holding non-string data.
uint8_t * buffer_end Where the non-poisoned region of the buffer ends.
uint8_t * buffer_start Where the non-poisoned region of the buffer starts.
command_config_t const * config
char const * filename Current file we're operating on.
int fuzzer_fd File descriptor pointing to a a directory to write fuzzer output.
char * fuzzer_proto_dir Subdirectory of where to write fuzzer files, from 'fuzzer-out dir'.
ssize_t last_ret Last return value.
uint32_t lineno Current line number.
char * path Current path we're operating in.
uint32_t test_count How many tests we've executed in this file.
fr_dict_gctx_t const * test_gctx Dictionary context for test dictionaries.
fr_dict_t * test_internal_dict Internal dictionary of test_gctx.
TALLOC_CTX * tmp_ctx Talloc context for test points.
tmpl_rules_t tmpl_rules To pass to parsing functions.

◆ command_line_range_t

struct command_line_range_t

Definition at line 226 of file unit_test_attribute.c.

+ Collaboration diagram for command_line_range_t:
Data Fields
uint32_t end End of line range.
fr_dlist_t entry Entry in the dlist.
uint32_t start Start of line range.

◆ command_result_t

struct command_result_t

Definition at line 174 of file unit_test_attribute.c.

Data Fields
union command_result_t.__unnamed8__ __unnamed__
bool error_to_data
char const * file
int line
command_rcode_t rcode
TALLOC_CTX * tmp_ctx Temporary context to hold buffers in this.

◆ command_result_t.__unnamed8__

union command_result_t.__unnamed8__

Definition at line 177 of file unit_test_attribute.c.

Data Fields
size_t offset Where we failed parsing the command.
int ret What code we should exit with.

Macro Definition Documentation

◆ ATTR_COMMON

#define ATTR_COMMON
Value:
fr_sbuff_t our_in = FR_SBUFF_IN(in, inlen); \
fr_slen_t slen; \
fr_dict_attr_t const *root; \
fr_dict_attr_t const *da; \
root = cc->tmpl_rules.attr.dict_def ? \
fr_dict_root(cc->tmpl_rules.attr.dict_def) : \
&da, \
root, \
&our_in, NULL); \
static fr_slen_t err
Definition dict.h:904
fr_slen_t fr_dict_attr_by_oid_substr(fr_dict_attr_err_t *err, fr_dict_attr_t const **out, fr_dict_attr_t const *parent, fr_sbuff_t *in, fr_sbuff_term_t const *tt))
Resolve an attribute using an OID string.
Definition dict_util.c:2644
fr_dict_attr_t const * fr_dict_root(fr_dict_t const *dict)
Return the root attribute of a dictionary.
Definition dict_util.c:2720
fr_dict_t const * fr_dict_internal(void)
Definition dict_util.c:5065
fr_dict_attr_err_t
Errors returned by attribute lookup functions.
Definition dict.h:341
@ FR_DICT_ATTR_OK
No error.
Definition dict.h:342
static fr_slen_t in
Definition dict.h:904
ssize_t fr_slen_t
#define FR_SBUFF_IN(_start, _len_or_end)
#define FR_SBUFF_ERROR_RETURN(_sbuff_or_marker)

Definition at line 1225 of file unit_test_attribute.c.

◆ BUFF_POISON_END

#define BUFF_POISON_END   0

Definition at line 303 of file unit_test_attribute.c.

◆ BUFF_POISON_START

#define BUFF_POISON_START   0

Definition at line 302 of file unit_test_attribute.c.

◆ CLEAR_TEST_POINT

#define CLEAR_TEST_POINT (   _cc)
Value:
do { \
talloc_free_children((_cc)->tmp_ctx); \
tp = NULL; \
} while (0)

Definition at line 1162 of file unit_test_attribute.c.

◆ COMMAND_OUTPUT_MAX

#define COMMAND_OUTPUT_MAX   8192

Definition at line 73 of file unit_test_attribute.c.

◆ DEFAULT_BUFFER_SIZE

#define DEFAULT_BUFFER_SIZE   1024

Default buffer size for a command_file_ctx_t.

Definition at line 151 of file unit_test_attribute.c.

◆ EXIT_WITH_FAILURE [1/2]

#define EXIT_WITH_FAILURE
Value:
do { \
ret = EXIT_FAILURE; \
goto cleanup; \
} while (0)
static bool cleanup
Definition radsniff.c:59

Definition at line 67 of file unit_test_attribute.c.

◆ EXIT_WITH_FAILURE [2/2]

#define EXIT_WITH_FAILURE
Value:
do { \
ret = EXIT_FAILURE; \
error_str = fr_strerror(); \
if (error_str) error_str = talloc_strdup(NULL, error_str); \
goto fail; \
} while (0)
#define talloc_strdup(_ctx, _str)
Definition talloc.h:149
char const * fr_strerror(void)
Get the last library error.
Definition strerror.c:558

Definition at line 67 of file unit_test_attribute.c.

◆ POISONED_BUFFER_END

#define POISONED_BUFFER_END (   _p)    ((_p) + BUFF_POISON_START + (talloc_array_length(_p) - (BUFF_POISON_START + BUFF_POISON_END)))

Definition at line 346 of file unit_test_attribute.c.

◆ POISONED_BUFFER_START

#define POISONED_BUFFER_START (   _p)    ((_p) + BUFF_POISON_START)

Definition at line 345 of file unit_test_attribute.c.

◆ RETURN_COMMAND_ERROR

#define RETURN_COMMAND_ERROR ( )
Value:
do { \
result->rcode = RESULT_COMMAND_ERROR; \
result->file = __FILE__; \
result->line = __LINE__; \
return 0; \
} while (0)
@ RESULT_COMMAND_ERROR
Fatal error - Command operation error.

Definition at line 117 of file unit_test_attribute.c.

◆ RETURN_EXIT

#define RETURN_EXIT (   _ret)
Value:
do { \
result->rcode = RESULT_EXIT; \
result->ret = _ret; \
result->file = __FILE__; \
result->line = __LINE__; \
return 0; \
} while (0)
@ RESULT_EXIT
Stop processing files and exit.

Definition at line 133 of file unit_test_attribute.c.

◆ RETURN_MISMATCH

#define RETURN_MISMATCH (   _len)
Value:
do { \
result->rcode = RESULT_MISMATCH; \
result->file = __FILE__; \
result->line = __LINE__; \
return (_len); \
} while (0)
@ RESULT_MISMATCH
Fatal error - Result didn't match what we expected.

Definition at line 125 of file unit_test_attribute.c.

◆ RETURN_NOOP

#define RETURN_NOOP (   _len)
Value:
do { \
result->rcode = RESULT_NOOP; \
result->file = __FILE__; \
result->line = __LINE__; \
return (_len); \
} while (0)
@ RESULT_NOOP
Not an error - Did nothing...

Definition at line 92 of file unit_test_attribute.c.

◆ RETURN_OK

#define RETURN_OK (   _len)
Value:
do { \
result->rcode = RESULT_OK; \
result->file = __FILE__; \
result->line = __LINE__; \
return (_len); \
} while (0)
@ RESULT_OK
Not an error - Result as expected.

Definition at line 75 of file unit_test_attribute.c.

◆ RETURN_OK_WITH_ERROR

#define RETURN_OK_WITH_ERROR ( )
Value:
do { \
result->rcode = RESULT_OK; \
result->file = __FILE__; \
result->line = __LINE__; \
result->error_to_data = true; \
return 0; \
} while (0)

Definition at line 83 of file unit_test_attribute.c.

◆ RETURN_PARSE_ERROR

#define RETURN_PARSE_ERROR (   _offset)
Value:
do { \
result->rcode = RESULT_PARSE_ERROR; \
result->offset = _offset; \
result->file = __FILE__; \
result->line = __LINE__; \
return 0; \
} while (0)
@ RESULT_PARSE_ERROR
Fatal error - Command syntax error.

Definition at line 108 of file unit_test_attribute.c.

◆ RETURN_SKIP_FILE

#define RETURN_SKIP_FILE ( )
Value:
do { \
result->rcode = RESULT_SKIP_FILE; \
result->file = __FILE__; \
result->line = __LINE__; \
return 0; \
} while (0)
@ RESULT_SKIP_FILE
Not an error - Skip the rest of this file, or until we reach an "eof" command.

Definition at line 100 of file unit_test_attribute.c.

◆ SBUFF_RETURN_OK_WITH_ERROR

#define SBUFF_RETURN_OK_WITH_ERROR (   _function,
  ... 
)
Value:
do { \
slen = _function(__VA_ARGS__); \
if (slen <= 0) RETURN_OK_WITH_ERROR(); \
} while (0)
while(1)
Definition acutest.h:856
#define RETURN_OK_WITH_ERROR()

Definition at line 142 of file unit_test_attribute.c.

Typedef Documentation

◆ command_func_t

typedef size_t(* command_func_t) (command_result_t *result, command_file_ctx_t *cc, char *data, size_t data_used, char *in, size_t inlen)

Command to execute.

Parameters
[out]resultOf executing the command.
[in]ccInformation about the file being processed.
[in,out]dataOutput of this command, or the previous command.
[in]data_usedLength of data in the data buffer.
[in]inCommand text to process.
[in]inlenLength of the remainder of the command to process.

Definition at line 241 of file unit_test_attribute.c.

◆ command_tmpl_rule_func

typedef ssize_t(* command_tmpl_rule_func) (TALLOC_CTX *ctx, tmpl_rules_t *rules, fr_sbuff_t *value)

Callback for a tmpl rule parser.

Definition at line 3061 of file unit_test_attribute.c.

◆ request_t

typedef struct request_s request_t

Definition at line 28 of file unit_test_attribute.c.

Enumeration Type Documentation

◆ command_rcode_t

Enumerator
RESULT_OK 

Not an error - Result as expected.

RESULT_NOOP 

Not an error - Did nothing...

RESULT_SKIP_FILE 

Not an error - Skip the rest of this file, or until we reach an "eof" command.

RESULT_PARSE_ERROR 

Fatal error - Command syntax error.

RESULT_COMMAND_ERROR 

Fatal error - Command operation error.

RESULT_MISMATCH 

Fatal error - Result didn't match what we expected.

RESULT_EXIT 

Stop processing files and exit.

Definition at line 153 of file unit_test_attribute.c.

Function Documentation

◆ _command_ctx_free()

static int _command_ctx_free ( command_file_ctx_t *  cc)
static

Definition at line 3956 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_allow_unresolved()

static size_t command_allow_unresolved ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Determine if unresolved attributes are allowed.

Definition at line 1210 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_attr_children()

static size_t command_attr_children ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Print attribute information.

Definition at line 1244 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_attr_flags()

static size_t command_attr_flags ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Print attribute information.

Definition at line 1284 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_attr_name()

static size_t command_attr_name ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Print attribute information.

Definition at line 1298 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_attr_oid()

static size_t command_attr_oid ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Print attribute information.

Definition at line 1312 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_attr_type()

static size_t command_attr_type ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Print attribute information.

Definition at line 1326 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_calc()

static size_t command_calc ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Perform calculations.

Definition at line 1351 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_calc_nary()

static size_t command_calc_nary ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Perform calculations on multi-valued ops.

Definition at line 1436 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_cast()

static size_t command_cast ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Perform casting.

Definition at line 1501 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_cd()

static size_t command_cd ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Change the working directory.

Definition at line 1551 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_clear()

static size_t command_clear ( command_result_t *  result,
UNUSED command_file_ctx_t *  cc,
char *  data,
size_t UNUSED  data_used,
UNUSED char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 1567 of file unit_test_attribute.c.

◆ command_comment()

static size_t command_comment ( UNUSED command_result_t *  result,
UNUSED command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
UNUSED char *  in,
UNUSED size_t  inlen 
)
static

Placeholder function for comments.

Definition at line 1171 of file unit_test_attribute.c.

◆ command_condition_normalise()

static size_t command_condition_normalise ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Parse and reprint a condition.

Definition at line 1688 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_count()

static size_t command_count ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
UNUSED char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 1732 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_ctx_alloc()

static command_file_ctx_t * command_ctx_alloc ( TALLOC_CTX *  ctx,
command_config_t const *  config,
char const *  path,
char const *  filename 
)
static

Definition at line 3973 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_ctx_reset()

static void command_ctx_reset ( command_file_ctx_t *  cc,
TALLOC_CTX *  ctx 
)
static

Definition at line 4028 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_de_encode_pair()

static size_t command_de_encode_pair ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Decode hex data into pairs, and then encode the pairs again.

The test point for the decoder can be given as "de-encode-pair.<symbol>". The encoder always uses the default test point of the protocol, as there is only one place to name a test point.

Definition at line 2366 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_decode_dns_label()

static size_t command_decode_dns_label ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 2123 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_decode_pair()

static size_t command_decode_pair ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 1872 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_decode_proto()

static size_t command_decode_proto ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 1897 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_dictionary_attribute_parse()

static size_t command_dictionary_attribute_parse ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse a dictionary attribute, writing "ok" to the data buffer is everything was ok.

Definition at line 2005 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_dictionary_dump()

static size_t command_dictionary_dump ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
size_t  data_used,
UNUSED char *  in,
UNUSED size_t  inlen 
)
static

Print the currently loaded dictionary.

Definition at line 2054 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_dictionary_read()

static size_t command_dictionary_read ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Read a dictionary from a file, and then free it.

Definition at line 2016 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_encode_dns_label()

static size_t command_encode_dns_label ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 2066 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_encode_pair()

static size_t command_encode_pair ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 2291 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_encode_proto()

static size_t command_encode_proto ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 2477 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_encode_raw()

static size_t command_encode_raw ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Encode a RADIUS attribute writing the result to the data buffer as space separated hexits.

Definition at line 2403 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_eof()

static size_t command_eof ( UNUSED command_result_t *  result,
UNUSED command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
UNUSED char *  in,
UNUSED size_t  inlen 
)
static

Command eof.

Mark the end of a test file if we're reading from stdin.

Doesn't actually do anything, is just a placeholder for the command processing loop.

Definition at line 2551 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ command_exit()

static size_t command_exit ( command_result_t *  result,
UNUSED command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Exit gracefully with the specified code.

Definition at line 2648 of file unit_test_attribute.c.

◆ command_func()

static int command_func ( UNUSED FILE *  fp,
UNUSED FILE *  fp_err,
UNUSED void *  ctx,
UNUSED fr_cmd_info_t const *  info 
)
static

Definition at line 1129 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ command_fuzzer_out()

static size_t command_fuzzer_out ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Enable fuzzer output.

Any commands that produce potentially useful corpus seed data will write that out data to files in the specified directory, using the md5 of the text input at as the file name.

The output directory given here is appended to the path given by '-F path'.

If there's no '-F path' command-line option set, then the path of the current file is used as the base directory.

Definition at line 2627 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_include()

static size_t command_include ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Execute another test file.

Definition at line 1180 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_load_dictionary()

static size_t command_load_dictionary ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 2656 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_match()

static size_t command_match ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
size_t  inlen 
)
static

Compare the data buffer to an expected value.

Definition at line 2700 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_match_regex()

static size_t command_match_regex ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
size_t  inlen 
)
static

Compare the data buffer against an expected expression.

Definition at line 2724 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_max_buffer_size()

static size_t command_max_buffer_size ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Artificially limit the maximum packet size.

Definition at line 2754 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_migrate()

static size_t command_migrate ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Set or clear migration flags.

Definition at line 2782 of file unit_test_attribute.c.

◆ command_need_feature()

static size_t command_need_feature ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Skip the test file if we're missing a particular feature.

Definition at line 2825 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_no()

static size_t command_no ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
size_t  inlen 
)
static

Negate the result of a match command or any command which returns "OK".

Definition at line 2848 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_pair()

static size_t command_pair ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 2925 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_pair_common()

static size_t command_pair_common ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen,
bool  allow_compare 
)
static

Parse an print an attribute pair or pair list.

Definition at line 2880 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_pair_compare()

static size_t command_pair_compare ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 2931 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_print()

static void command_print ( void  )
static

Definition at line 1149 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_proto()

static size_t command_proto ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Dynamically load a protocol library.

Definition at line 2941 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_proto_dictionary()

static size_t command_proto_dictionary ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 2958 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_proto_dictionary_root()

static size_t command_proto_dictionary_root ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 2965 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_radmin_add()

static size_t command_radmin_add ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t UNUSED  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 1577 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_radmin_tab()

static size_t command_radmin_tab ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 1636 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_read_file()

static size_t command_read_file ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse a list of pairs.

Definition at line 2425 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_returned()

static size_t command_returned ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
UNUSED char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 2471 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_tmpl()

static size_t command_tmpl ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse an reprint a tmpl expansion.

Definition at line 3008 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_tmpl_rule_allow_foreign()

static ssize_t command_tmpl_rule_allow_foreign ( UNUSED TALLOC_CTX *  ctx,
tmpl_rules_t *  rules,
fr_sbuff_t *  value 
)
static

Definition at line 3063 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_tmpl_rule_allow_unknown()

static ssize_t command_tmpl_rule_allow_unknown ( UNUSED TALLOC_CTX *  ctx,
tmpl_rules_t *  rules,
fr_sbuff_t *  value 
)
static

Definition at line 3073 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_tmpl_rule_allow_unresolved()

static ssize_t command_tmpl_rule_allow_unresolved ( UNUSED TALLOC_CTX *  ctx,
tmpl_rules_t *  rules,
fr_sbuff_t *  value 
)
static

Definition at line 3083 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_tmpl_rule_attr_parent()

static ssize_t command_tmpl_rule_attr_parent ( UNUSED TALLOC_CTX *  ctx,
tmpl_rules_t *  rules,
fr_sbuff_t *  value 
)
static

Definition at line 3093 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_tmpl_rule_list_def()

static ssize_t command_tmpl_rule_list_def ( UNUSED TALLOC_CTX *  ctx,
tmpl_rules_t *  rules,
fr_sbuff_t *  value 
)
static

Definition at line 3107 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_tmpl_rule_request_def()

static ssize_t command_tmpl_rule_request_def ( TALLOC_CTX *  ctx,
tmpl_rules_t *  rules,
fr_sbuff_t *  value 
)
static

Definition at line 3121 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ command_tmpl_rules()

static size_t command_tmpl_rules ( command_result_t *  result,
command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 3136 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_touch()

static size_t command_touch ( command_result_t *  result,
UNUSED command_file_ctx_t *  cc,
UNUSED char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Touch a file to indicate a test completed.

Definition at line 3049 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_value_box_normalise()

static size_t command_value_box_normalise ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Definition at line 3181 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_walk()

static int command_walk ( UNUSED void *  ctx,
fr_cmd_walk_info_t *  info 
)
static

Definition at line 1134 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ command_write()

static size_t command_write ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
size_t  inlen 
)
static

Definition at line 3261 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_xlat_argv()

static size_t command_xlat_argv ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse an reprint and xlat argv expansion.

Definition at line 3513 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_xlat_expr()

static size_t command_xlat_expr ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse and reprint an xlat expression expansion.

Definition at line 3354 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_xlat_normalise()

static size_t command_xlat_normalise ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse an reprint and xlat expansion.

Definition at line 3308 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_xlat_purify()

static size_t command_xlat_purify ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse, purify, and reprint an xlat expression expansion.

Definition at line 3389 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ command_xlat_purify_condition()

static size_t command_xlat_purify_condition ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
UNUSED size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)
static

Parse, purify, and reprint an xlat expression expansion.

Definition at line 3451 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ commands_print()

static void commands_print ( void  )
static

Definition at line 4257 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ decode_attr()

static int decode_attr ( char *  buffer,
char **  endptr 
)
static

Definition at line 655 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ decode_pair()

static size_t decode_pair ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
char *  in,
size_t  inlen,
fr_pair_t **  head_p,
char **  hex_p 
)
static

Decode hex data into a list of pairs.

Shared by "decode-pair" and "de-encode-pair". The decoded pairs are the children of *head_p, and are allocated in cc->tmp_ctx. The caller has to clear that context once it is finished with them.

Parameters
[out]resultof the command, when this function fails.
[in]cccommand file context.
[in,out]datadata buffer, which holds the input hex, and is then used as scratch space.
[in]intext of the command, which starts with the test point.
[in]inlenlength of "in".
[out]head_ppair which holds the decoded pairs.
[out]hex_pwhere the hex data started in "in". The caller needs it in order to look for a second test point. May be NULL.
Returns
  • >0 the number of bytes of input which were decoded.
  • 0 on failure, where "result" has been filled in, and the caller has to return 0.

Definition at line 1764 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ decode_vendor()

static int decode_vendor ( char *  buffer,
char **  endptr 
)
static

Definition at line 678 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ dictionary_current()

static fr_dict_t * dictionary_current ( command_file_ctx_t *  cc)
static

Definition at line 981 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ dictionary_load_common()

static int dictionary_load_common ( command_result_t *  result,
command_file_ctx_t *  cc,
char const *  in,
char const *  default_subdir 
)
static

Common dictionary load function.

Callers call fr_dict_global_ctx_set to set the context the dictionaries will be loaded into.

Definition at line 995 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ dump_fuzzer_data()

static int dump_fuzzer_data ( int  fd_dir,
char const *  text,
uint8_t const *  data,
size_t  data_len 
)
inlinestatic

Definition at line 421 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_data()

static ssize_t encode_data ( char *  p,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 601 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_data_string()

static ssize_t encode_data_string ( char *  buffer,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 487 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ encode_data_tlv()

static ssize_t encode_data_tlv ( char *  buffer,
char **  endptr,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 533 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_evs()

static ssize_t encode_evs ( char *  buffer,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 767 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_extended()

static ssize_t encode_extended ( char *  buffer,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 792 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_long_extended()

static ssize_t encode_long_extended ( char *  buffer,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 817 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_pair()

static size_t encode_pair ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
fr_test_point_pair_encode_t *  tp,
void *  encode_ctx,
fr_pair_list_t *  head,
bool  truncate,
char const *  fuzzer_text 
)
static

Encode a list of pairs, writing the result to the data buffer as hex.

Shared by "encode-pair" and "de-encode-pair". The pair list and the test point context are freed here, which means that the caller cannot use either one afterwards.

Parameters
[out]resultof the command. It is always filled in, so the caller returns whatever this function returns.
[in]cccommand file context.
[out]datadata buffer, where the hex output is written.
[in]tpencoder test point.
[in]encode_ctxcontext for the encoder test point.
[in]headpairs to encode.
[in]truncaterun the truncate torture test.
[in]fuzzer_textname the corpus seed file after this text, or NULL to write no seed file.
Returns
the number of characters written to the data buffer.

Definition at line 2183 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_rfc()

static ssize_t encode_rfc ( char *  buffer,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 868 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_tlv()

static ssize_t encode_tlv ( char *  buffer,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 712 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ encode_vsa()

static ssize_t encode_vsa ( char *  buffer,
uint8_t *  output,
size_t  outlen 
)
static

Definition at line 743 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ features_print()

static void features_print ( CONF_SECTION *  features)
static

Definition at line 4245 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fuzzer_open_fd()

static int fuzzer_open_fd ( command_file_ctx_t *  cc,
char **  out,
char const *  base,
char const *  dir 
)
static

Helper function to open a fuzzer path, and update the name / FD.

Definition at line 2560 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hex_print()

static size_t hex_print ( char *  out,
size_t  outlen,
uint8_t const *  in,
size_t  inlen 
)
inlinestatic

Print hex string to buffer.

Definition at line 396 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hex_to_bin()

static ssize_t hex_to_bin ( uint8_t *  out,
size_t  outlen,
char *  in,
size_t  inlen 
)
static

Definition at line 564 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ line_ranges_parse()

static int line_ranges_parse ( TALLOC_CTX *  ctx,
fr_dlist_head_t *  out,
fr_sbuff_t *  in 
)
static

Definition at line 4269 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ load_proto_library()

static ssize_t load_proto_library ( char const *  proto_name)
static

Definition at line 919 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ load_test_point_by_command()

static ssize_t load_test_point_by_command ( void **  symbol,
char *  command,
char const *  dflt_symbol 
)
static

Definition at line 946 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 4500 of file unit_test_attribute.c.

◆ mismatch_print()

static void mismatch_print ( command_file_ctx_t *  cc,
char const *  command,
char *  expected,
size_t  expected_len,
char *  got,
size_t  got_len,
bool  print_diff 
)
static

Definition at line 348 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ parse_typed_value()

static size_t parse_typed_value ( command_result_t *  result,
command_file_ctx_t *  cc,
fr_value_box_t *  box,
char const **  out,
char const *  in,
size_t  inlen 
)
static

Definition at line 1042 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ poisoned_buffer_allocate()

static int poisoned_buffer_allocate ( TALLOC_CTX *  ctx,
uint8_t **  buff,
size_t  size 
)
static

Allocate a special buffer with poisoned memory regions at the start and end.

Definition at line 309 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_file()

static int process_file ( bool *  exit_now,
TALLOC_CTX *  ctx,
command_config_t const *  config,
const char *  root_dir,
char const *  filename,
fr_dlist_head_t *  lines 
)
static

Definition at line 4051 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ process_line() [1/2]

size_t process_line ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
size_t  inlen 
)
+ Here is the caller graph for this function:

◆ process_line() [2/2]

size_t process_line ( command_result_t *  result,
command_file_ctx_t *  cc,
char *  data,
size_t  data_used,
char *  in,
UNUSED size_t  inlen 
)

Definition at line 3867 of file unit_test_attribute.c.

+ Here is the call graph for this function:

◆ process_path()

static int process_path ( bool *  exit_now,
TALLOC_CTX *  ctx,
command_config_t const *  config,
const char *  path 
)
static

Definition at line 4353 of file unit_test_attribute.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ unload_proto_library()

static void unload_proto_library ( void  )
static

Definition at line 913 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

◆ usage()

static void usage ( char const *  name)
static

Definition at line 4227 of file unit_test_attribute.c.

◆ xlat_test()

static xlat_action_t xlat_test ( UNUSED TALLOC_CTX *  ctx,
UNUSED fr_dcursor_t *  out,
UNUSED xlat_ctx_t const *  xctx,
UNUSED request_t *  request,
UNUSED fr_value_box_list_t *  in 
)
static

Definition at line 259 of file unit_test_attribute.c.

+ Here is the caller graph for this function:

Variable Documentation

◆ allow_purify

bool allow_purify = false
static

Definition at line 272 of file unit_test_attribute.c.

◆ command_head

fr_cmd_t* command_head = NULL
static

Definition at line 1127 of file unit_test_attribute.c.

◆ command_rcode_table

fr_table_num_sorted_t command_rcode_table[]
static
Initial value:
= {
{ L("command-error"), RESULT_COMMAND_ERROR },
{ L("exit"), RESULT_EXIT },
{ L("ok"), RESULT_OK },
{ L("parse-error"), RESULT_PARSE_ERROR },
{ L("result-mismatch"), RESULT_MISMATCH },
{ L("skip-file"), RESULT_SKIP_FILE },
}
#define L(_str)
Helper for initialising arrays of string literals.
Definition build.h:228

Definition at line 164 of file unit_test_attribute.c.

◆ command_rcode_table_len

size_t command_rcode_table_len = NUM_ELEMENTS(command_rcode_table)
static

Definition at line 172 of file unit_test_attribute.c.

◆ commands

fr_table_ptr_sorted_t commands[]
static

Definition at line 3563 of file unit_test_attribute.c.

◆ commands_len

size_t commands_len = NUM_ELEMENTS(commands)
static

Definition at line 3865 of file unit_test_attribute.c.

◆ dl

dl_t* dl = NULL
static

Definition at line 267 of file unit_test_attribute.c.

◆ dl_loader

dl_loader_t* dl_loader = NULL
static

Definition at line 268 of file unit_test_attribute.c.

◆ el

fr_event_list_t* el = NULL
static

Definition at line 270 of file unit_test_attribute.c.

◆ fail_file

char const* fail_file = ""
static

Definition at line 279 of file unit_test_attribute.c.

◆ hextab

char const hextab[] = "0123456789abcdef"
static

Definition at line 485 of file unit_test_attribute.c.

◆ proto_name_prev

char proto_name_prev[128] = {}
static

Definition at line 266 of file unit_test_attribute.c.

◆ receipt_dir

char const* receipt_dir = NULL
static

Definition at line 278 of file unit_test_attribute.c.

◆ receipt_file

char const* receipt_file = NULL
static

Definition at line 277 of file unit_test_attribute.c.

◆ token2op

const fr_token_t token2op[SBUFF_CHAR_CLASS]
static
Initial value:
= {
[ '+' ] = T_ADD,
[ '-' ] = T_SUB,
[ '*' ] = T_MUL,
[ '/' ] = T_DIV,
[ '^' ] = T_XOR,
[ '.' ] = T_ADD,
[ '&' ] = T_AND,
[ '|' ] = T_OR,
[ '%' ] = T_MOD,
}
@ T_AND
Definition token.h:53
@ T_SUB
Definition token.h:50
@ T_XOR
Definition token.h:56
@ T_DIV
Definition token.h:52
@ T_MOD
Definition token.h:58
@ T_ADD
Definition token.h:49
@ T_MUL
Definition token.h:51
@ T_OR
Definition token.h:54

Definition at line 1336 of file unit_test_attribute.c.

◆ write_filename

char const* write_filename = NULL
static

Definition at line 274 of file unit_test_attribute.c.

◆ write_fp

FILE* write_fp = NULL
static

Definition at line 275 of file unit_test_attribute.c.

◆ xlat_test_args

xlat_arg_parser_t const xlat_test_args[]
static
Initial value:
= {
{ .required = true, .single = true, .type = FR_TYPE_STRING },
}
@ FR_TYPE_STRING
String of printable characters.
#define XLAT_ARG_PARSER_TERMINATOR
Definition xlat.h:160

Definition at line 250 of file unit_test_attribute.c.

◆ xlat_test_no_args

xlat_arg_parser_t const xlat_test_no_args[]
static
Initial value:

Definition at line 255 of file unit_test_attribute.c.