Coverage Report

Created: 2025-12-31 06:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/freeradius-server/src/freeradius-devel/util/value.h
Line
Count
Source
1
#pragma once
2
/*
3
 *  This program is free software; you can redistribute it and/or modify
4
 *  it under the terms of the GNU General Public License as published by
5
 *  the Free Software Foundation; either version 2 of the License, or
6
 *  (at your option) any later version.
7
 *
8
 *  This program is distributed in the hope that it will be useful,
9
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 *  GNU General Public License for more details.
12
 *
13
 *  You should have received a copy of the GNU General Public License
14
 *  along with this program; if not, write to the Free Software
15
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
16
 */
17
18
/** Boxed value structures and functions to manipulate them
19
 *
20
 * @file src/lib/util/value.h
21
 *
22
 * @copyright 2015-2018 Arran Cudbard-Bell (a.cudbardb@freeradius.org)
23
 */
24
RCSIDH(value_h, "$Id: 8649e266d20134a5c9e69ebe5e283652cea23877 $")
25
26
#ifdef __cplusplus
27
extern "C" {
28
#endif
29
30
#define FR_MAX_STRING_LEN 254 /* RFC2138: string 0-253 octets */
31
32
typedef struct value_box_s fr_value_box_t;
33
34
#ifdef __cplusplus
35
}
36
#endif
37
38
#include <freeradius-devel/build.h>
39
#include <freeradius-devel/util/dcursor.h>
40
#include <freeradius-devel/missing.h>
41
#include <freeradius-devel/util/dbuff.h>
42
#include <freeradius-devel/util/debug.h>
43
#include <freeradius-devel/util/dict.h>
44
#include <freeradius-devel/util/dlist.h>
45
#include <freeradius-devel/util/inet.h>
46
#include <freeradius-devel/util/log.h>
47
#include <freeradius-devel/util/strerror.h>
48
#include <freeradius-devel/util/table.h>
49
#include <freeradius-devel/util/time.h>
50
#include <freeradius-devel/util/token.h>
51
#include <freeradius-devel/util/types.h>
52
53
#ifdef __cplusplus
54
extern "C" {
55
#endif
56
57
/*
58
 *  Allow public and private versions of the same structures
59
 */
60
#ifdef _CONST
61
#  error _CONST can only be defined in the local header
62
#endif
63
#ifndef _VALUE_PRIVATE
64
#  define _CONST const
65
#else
66
#  define _CONST
67
#endif
68
69
extern size_t const fr_value_box_field_sizes[];
70
71
extern size_t const fr_value_box_offsets[];
72
73
extern fr_sbuff_unescape_rules_t fr_value_unescape_double;
74
extern fr_sbuff_unescape_rules_t fr_value_unescape_single;
75
extern fr_sbuff_unescape_rules_t fr_value_unescape_solidus;
76
extern fr_sbuff_unescape_rules_t fr_value_unescape_backtick;
77
extern fr_sbuff_unescape_rules_t *fr_value_unescape_by_quote[T_TOKEN_LAST];
78
extern fr_sbuff_unescape_rules_t *fr_value_unescape_by_char[UINT8_MAX + 1];
79
80
extern fr_sbuff_escape_rules_t fr_value_escape_double;
81
extern fr_sbuff_escape_rules_t fr_value_escape_single;
82
extern fr_sbuff_escape_rules_t fr_value_escape_solidus;
83
extern fr_sbuff_escape_rules_t fr_value_escape_backtick;
84
extern fr_sbuff_escape_rules_t fr_value_escape_secret;
85
extern fr_sbuff_escape_rules_t *fr_value_escape_by_quote[T_TOKEN_LAST];
86
extern fr_sbuff_escape_rules_t *fr_value_escape_by_char[UINT8_MAX + 1];
87
88
extern fr_sbuff_escape_rules_t fr_value_escape_unprintables;
89
90
#ifndef NDEBUG
91
4.31M
#  define FR_VALUE_BOX_MAGIC RADIUSD_MAGIC_NUMBER
92
#endif
93
94
/** @name List and cursor type definitions
95
 */
96
FR_DLIST_TYPES(fr_value_box_list)
97
FR_DLIST_TYPEDEFS(fr_value_box_list, fr_value_box_list_t, fr_value_box_entry_t)
98
FR_DCURSOR_DLIST_TYPES(fr_value_box_dcursor, fr_value_box_list, fr_value_box_t)
99
/** @{ */
100
101
typedef union {
102
  /*
103
  * Variable length values
104
  */
105
  struct {
106
    union {
107
      char const  * _CONST    strvalue; //!< Pointer to UTF-8 string.
108
      uint8_t const   * _CONST    octets;   //!< Pointer to binary string.
109
      void    * _CONST    ptr;    //!< generic pointer.
110
    };
111
    size_t    length;           //!< Only these types are variable length.
112
  };
113
114
  struct {
115
    void      * _CONST cursor;    //!< cursors
116
    char const    * _CONST name;      //!< name of the current cursor
117
  };
118
119
  /*
120
  * Fixed length values
121
  */
122
  fr_ipaddr_t       ip;     //!< IPv4/6 address/prefix.
123
124
  fr_ifid_t       ifid;     //!< IPv6 interface ID.
125
  fr_ethernet_t       ether;      //!< Ethernet (MAC) address.
126
127
  bool          boolean;    //!< A truth value.
128
129
  uint8_t         uint8;      //!< 8bit unsigned integer.
130
  uint16_t        uint16;     //!< 16bit unsigned integer.
131
  uint32_t        uint32;     //!< 32bit unsigned integer.
132
  uint64_t        uint64;     //!< 64bit unsigned integer.
133
  uint128_t       uint128;    //!< 128bit unsigned integer.
134
135
  int8_t          int8;     //!< 8bit signed integer.
136
  int16_t         int16;      //!< 16bit signed integer.
137
  int32_t         int32;      //!< 32bit signed integer.
138
  int64_t         int64;      //!< 64bit signed integer;
139
140
  float         float32;    //!< Single precision float.
141
  double          float64;    //!< Double precision float.
142
143
  fr_unix_time_t        date;     //!< Date internal format in nanoseconds
144
145
  /*
146
  * System specific - Used for runtime configuration only.
147
  */
148
  size_t          size;     //!< System specific file/memory size.
149
  fr_time_delta_t       time_delta;   //!< a delta time in nanoseconds
150
151
  fr_dict_attr_t const      *da;      //!< dictionary reference
152
153
  fr_value_box_list_t     children;   //!< for groups
154
} fr_value_box_datum_t;
155
156
/** Escaping that's been applied to a value box
157
 *
158
 * This should be a unique value for each dialect being escaped.  If the value is 0,
159
 * then the box is not escaped.  If the escaped value matches the escaped value of
160
 * the function performing the escaping then it should not be re-escaped.
161
 */
162
typedef uintptr_t fr_value_box_safe_for_t;
163
164
/*
165
 *  The default value of "completely unsafe" is zero.  That way any initialization routines will default
166
 *  to marking the data as unsafe.
167
 *
168
 *  The only data which should be marked as being completely safe is data taken from the configuration
169
 *  files which are managed by the administrator.  Data create by end users (e.g. passwords) should always
170
 *  be marked as unsafe.
171
 */
172
4.62k
#define FR_VALUE_BOX_SAFE_FOR_NONE ((uintptr_t) 0)
173
0
#define FR_VALUE_BOX_SAFE_FOR_ANY (~((uintptr_t) 0))
174
175
/** Union containing all data types supported by the server
176
 *
177
 * This union contains all data types that can be represented by fr_pair_ts. It may also be used in other parts
178
 * of the server where values of different types need to be stored.
179
 *
180
 * fr_type_t should be an enumeration of the values in this union.
181
 *
182
 * Don't change the order of the fields below without checking that the output of radsize doesn't change.
183
 *
184
 * The first few fields (before safe_for) are reused in the #fr_pair_t.  This allows structural
185
 * data types to have vp->vp_type, and to also use / set the various flags defined below.  Do NOT
186
 * change the order of the fields!
187
 */
188
struct value_box_s {
189
  /** Type and flags should appear together for packing efficiency
190
   */
191
  fr_type_t   _CONST    type;     //!< Type of this value-box, at the start, see pair.h
192
193
  unsigned int          tainted : 1;    //!< i.e. did it come from an untrusted source
194
  unsigned int          secret : 1;   //!< Same as #fr_dict_attr_flags_t secret
195
  unsigned int        immutable : 1;    //!< once set, the value cannot be changed
196
  unsigned int        talloced : 1;   //!< Talloced, not stack or text allocated.
197
198
  unsigned int        edit : 1;   //!< to control foreach / edits
199
200
  fr_value_box_safe_for_t _CONST    safe_for;   //!< A unique value to indicate if that value box is safe
201
                  ///< for consumption by a particular module for a particular
202
                  ///< purpose.  e.g. LDAP, SQL, etc.
203
                  ///< Usually set by the xlat framework on behalf of an xlat
204
                  ///< escaping function, and checked by a #fr_value_box_escape_t
205
                  ///< to see if it needs to operate.
206
207
  fr_value_box_entry_t      entry;      //!< Doubly linked list entry.
208
209
  fr_dict_attr_t const      *enumv;     //!< Enumeration values.
210
211
  fr_value_box_datum_t      datum;      //!< The value held by the value box.  Should appear
212
                  ///< last for packing efficiency.
213
#ifndef NDEBUG
214
  uint64_t        magic;      //!< Value to verify that the structure was allocated or initialised properly.
215
  char const        *file;      //!< File where the box was allocated or initialised.
216
  int         line;     //!< Line where the box was allocated or initialised.
217
#endif
218
};
219
220
/** @name List and cursor function definitions
221
 */
222
0
FR_DLIST_FUNCS(fr_value_box_list, fr_value_box_t, entry)
Unexecuted instantiation: calc.c:fr_value_box_list_init
Unexecuted instantiation: cbor.c:fr_value_box_list_init
Unexecuted instantiation: dict_tokenize.c:fr_value_box_list_init
Unexecuted instantiation: dict_util.c:fr_value_box_list_init
Unexecuted instantiation: dns.c:fr_value_box_list_init
Unexecuted instantiation: edit.c:fr_value_box_list_init
Unexecuted instantiation: pair.c:fr_value_box_list_init
Unexecuted instantiation: value.c:fr_value_box_list_init
Unexecuted instantiation: fuzzer.c:fr_value_box_list_init
Unexecuted instantiation: decode.c:fr_value_box_list_init
Unexecuted instantiation: base.c:fr_value_box_list_init
Unexecuted instantiation: encode.c:fr_value_box_list_init
223
224
0
#define fr_value_box_list_foreach(_list_head, _iter)    fr_dlist_foreach(fr_value_box_list_dlist_head(_list_head), fr_value_box_t, _iter)
225
0
#define fr_value_box_list_foreach_safe(_list_head, _iter) fr_dlist_foreach_safe(fr_value_box_list_dlist_head(_list_head), fr_value_box_t, _iter)
226
227
FR_DCURSOR_FUNCS(fr_value_box_dcursor, fr_value_box_list, fr_value_box_t)
228
/** @} */
229
230
/** Actions to perform when we process a box in a list
231
 *
232
 */
233
typedef enum {
234
  FR_VALUE_BOX_LIST_NONE      = 0x00,     //!< Do nothing to processed boxes.
235
  FR_VALUE_BOX_LIST_REMOVE    = 0x01,     //!< Remove the box from the input list.
236
  FR_VALUE_BOX_LIST_FREE_BOX    = (0x02 | FR_VALUE_BOX_LIST_REMOVE), //!< Free each processed box.
237
  FR_VALUE_BOX_LIST_FREE_BOX_VALUE  = 0x04,     //!< Explicitly free any value buffers associated
238
                  ///< with a box.
239
  FR_VALUE_BOX_LIST_FREE      = (FR_VALUE_BOX_LIST_FREE_BOX | FR_VALUE_BOX_LIST_FREE_BOX_VALUE)
240
} fr_value_box_list_action_t;
241
242
0
#define vb_should_free(_action)   ((_action & FR_VALUE_BOX_LIST_FREE_BOX) == FR_VALUE_BOX_LIST_FREE_BOX)
243
0
#define vb_should_free_value(_action) ((_action & FR_VALUE_BOX_LIST_FREE_BOX_VALUE) == FR_VALUE_BOX_LIST_FREE_BOX_VALUE)
244
0
#define vb_should_remove(_action) ((_action & FR_VALUE_BOX_LIST_REMOVE) == FR_VALUE_BOX_LIST_REMOVE)
245
246
#ifndef NDEBUG
247
27.4k
#define VALUE_BOX_NDEBUG_INITIALISER .file = __FILE__, .line = __LINE__, .magic = FR_VALUE_BOX_MAGIC
248
#else
249
#define VALUE_BOX_NDEBUG_INITIALISER
250
#endif
251
252
/** @name Field accessors for #fr_value_box_t
253
 *
254
 * Use these instead of accessing fields directly to make refactoring
255
 * easier in future.
256
 *
257
 * @{
258
 */
259
366k
#define vb_strvalue       datum.strvalue
260
2.53M
#define vb_octets       datum.octets
261
#define vb_void         datum.ptr
262
0
#define vb_group        datum.children
263
57.1k
#define vb_attr         datum.da
264
265
352k
#define vb_ip         datum.ip
266
267
31
#define vb_ifid         datum.ifid.addr
268
112
#define vb_ether        datum.ether.addr
269
270
260
#define vb_bool         datum.boolean
271
38.8k
#define vb_uint8        datum.uint8
272
4.43k
#define vb_uint16       datum.uint16
273
9.18k
#define vb_uint32       datum.uint32
274
400
#define vb_uint64       datum.uint64
275
#define vb_uint128        datum.uint128
276
277
0
#define vb_int8         datum.int8
278
0
#define vb_int16        datum.int16
279
0
#define vb_int32        datum.int32
280
0
#define vb_int64        datum.int64
281
282
0
#define vb_float32        datum.float32
283
0
#define vb_float64        datum.float64
284
285
9.38k
#define vb_date         datum.date
286
287
0
#define vb_size         datum.size
288
#define vb_timeval        datum.timeval
289
17.8k
#define vb_time_delta       datum.time_delta
290
291
3.59M
#define vb_length       datum.length
292
293
0
#define vb_cursor       datum.cursor
294
0
#define vb_cursor_name        datum.name
295
/** @} */
296
297
/** @name Argument boxing macros
298
 *
299
 * These macros allow C types to be passed to functions which take
300
 * boxed arguments, without needing to declare a fr_value_box_t
301
 * explicitly on the stack.
302
 *
303
 * @{
304
 */
305
7.40k
#define _fr_box_with_len(_type, _field, _val, _len) &(fr_value_box_t){ .type = _type, _field = _val, .vb_length = _len, VALUE_BOX_NDEBUG_INITIALISER }
306
307
0
#define fr_box_strvalue(_val)     _fr_box_with_len(FR_TYPE_STRING, .vb_strvalue, _val, strlen(_val))
308
7.40k
#define fr_box_strvalue_len(_val, _len)   _fr_box_with_len(FR_TYPE_STRING, .vb_strvalue, _val, _len)
309
310
0
#define fr_box_octets(_val, _len)   _fr_box_with_len(FR_TYPE_OCTETS, .vb_octets, _val, _len)
311
0
#define fr_box_strvalue_buffer(_val)    _fr_box_with_len(FR_TYPE_STRING, .vb_strvalue, _val, talloc_array_length(_val) - 1)
312
#define fr_box_octets_buffer(_val)    _fr_box_with_len(FR_TYPE_OCTETS, .vb_octets, _val, talloc_array_length(_val))
313
314
0
#define _fr_box(_type, _field, _val) (&(fr_value_box_t){ .type = _type, _field = (_val), VALUE_BOX_NDEBUG_INITIALISER })
315
316
0
#define fr_box_ipaddr(_val)     _fr_box((((_val).af == AF_INET) ? \
317
0
              (((_val).prefix == 32) ?  FR_TYPE_IPV4_ADDR : \
318
0
                    FR_TYPE_IPV4_PREFIX) : \
319
0
              (((_val).prefix == 128) ? FR_TYPE_IPV6_ADDR : \
320
0
                    FR_TYPE_IPV6_PREFIX)), \
321
0
            .vb_ip, _val)
322
#define fr_box_ipv4addr(_val)     _fr_box(FR_TYPE_IPV4_ADDR, .vb_ip, _val)
323
#define fr_box_ipv4prefix(_val)     _fr_box(FR_TYPE_IPV4_PREFIX, .vb_ip, _val)
324
#define fr_box_ipv6addr(_val)     _fr_box(FR_TYPE_IPV6_ADDR, .vb_ip, _val)
325
#define fr_box_ipv6prefix(_val)     _fr_box(FR_TYPE_IPV6_PREFIX, .vb_ip, _val)
326
327
#define fr_box_ifid(_val)     _fr_box(FR_TYPE_IFID, .vb_ifid, _val)
328
0
#define fr_box_ether(_val)                      &(fr_value_box_t){ .type = FR_TYPE_ETHERNET, .vb_ether = { _val[0], _val[1], _val[2], _val[3], _val[4], _val[5] } }
329
330
#define fr_box_bool(_val)     _fr_box(FR_TYPE_BOOL, .vb_bool, _val)
331
332
#define fr_box_uint8(_val)      _fr_box(FR_TYPE_UINT8, .vb_uint8, _val)
333
#define fr_box_uint16(_val)     _fr_box(FR_TYPE_UINT16, .vb_uint16, _val)
334
#define fr_box_uint32(_val)     _fr_box(FR_TYPE_UINT32, .vb_uint32, _val)
335
#define fr_box_uint64(_val)     _fr_box(FR_TYPE_UINT64, .vb_uint64, _val)
336
#define fr_box_uint128(_val)      _fr_box(FR_TYPE_UINT128, .vb_uint128, _val)
337
338
#define fr_box_int8(_val)     _fr_box(FR_TYPE_INT8, .vb_int8, _val)
339
0
#define fr_box_int16(_val)      _fr_box(FR_TYPE_INT16, .vb_int16, _val)
340
#define fr_box_int32(_val)      _fr_box(FR_TYPE_INT32, .vb_int32, _val)
341
#define fr_box_int64(_val)      _fr_box(FR_TYPE_INT64, .vb_int64, _val)
342
343
#define fr_box_float32(_val)      _fr_box(FR_TYPE_FLOAT32, .vb_float32, _val)
344
#define fr_box_float64(_val)      _fr_box(FR_TYPE_FLOAT64, .vb_float64, _val)
345
346
#define fr_box_date(_val)     _fr_box(FR_TYPE_DATE, .vb_date, _val)
347
348
#define fr_box_time(_val)     _fr_box(FR_TYPE_DATE, .vb_date, fr_time_to_unix_time(_val))
349
350
#define fr_box_size(_val)     _fr_box(FR_TYPE_SIZE, .vb_size, _val)
351
352
#define _fr_box_with_da(_type, _field, _val, _da) (&(fr_value_box_t){ .type = _type, _field = (_val), .enumv = (_da) })
353
354
#define fr_box_time_delta_with_res(_val, _res)  _fr_box_with_da(FR_TYPE_TIME_DELTA, \
355
                .vb_time_delta, \
356
                (_val), \
357
                (&(fr_dict_attr_t){ \
358
                  .name = NULL, \
359
                  .type = FR_TYPE_TIME_DELTA, \
360
                  .flags = { \
361
                    .type_size = _res \
362
                  } \
363
                }))
364
365
#define fr_box_time_delta(_val)     fr_box_time_delta_with_res((_val), FR_TIME_RES_SEC)
366
367
#define fr_box_time_delta_sec(_val)   fr_box_time_delta_with_res((_val), FR_TIME_RES_SEC)
368
369
#define fr_box_time_delta_msec(_val)    fr_box_time_delta_with_res((_val), FR_TIME_RES_MSEC)
370
371
#define fr_box_time_delta_nsec(_val)    fr_box_time_delta_with_res((_val), FR_TIME_RES_NSEC)
372
373
#define fr_box_time_delta_usec(_val)    fr_box_time_delta_with_res((_val), FR_TIME_RES_USEC)
374
375
/** Create an ephemeral box
376
 *
377
 * @note This likely shouldn't be used for variable width integers like 'int'
378
 * as it obscures the underlying type.
379
 *
380
 * @param[in] _val  to box.
381
 */
382
#define fr_box(_val) _Generic((_val), \
383
  fr_ipaddr_t *   : fr_box_ipaddr, \
384
  fr_ipaddr_t const * : fr_box_ipaddr, \
385
  fr_ethernet_t *   : fr_box_ether, \
386
  fr_ethernet_t const * : fr_box_ether, \
387
  bool        : fr_box_bool, \
388
  int8_t      : fr_box_int8, \
389
  int16_t     : fr_box_int16, \
390
  int32_t     : fr_box_int32, \
391
  int64_t     : fr_box_int16, \
392
  uint8_t     : fr_box_uint8, \
393
  uint16_t    : fr_box_uint16, \
394
  uint32_t    : fr_box_uint32, \
395
  uint64_t    : fr_box_uint64, \
396
  size_t      : fr_box_size, \
397
  float     : fr_box_float32, \
398
  double      : fr_box_float64 \
399
)(_val)
400
401
/** Create an ephemeral boxed value with a variable length
402
 *
403
 * @param[in] _val  C variable to assign value from.
404
 * @param[in] _len  of C variable.
405
 */
406
#define fr_box_len( _val, _len) \
407
_Generic((_val), \
408
  char *      : fr_box_strvalue_len, \
409
  char const *    : fr_box_strvalue_len, \
410
  uint8_t *   : fr_box_octets, \
411
  uint8_t const *   : fr_box_octets \
412
)(_val, _len)
413
414
/** @} */
415
416
/** @name Type checking macros
417
 *
418
 * Convenience macros for checking if a box is a
419
 * specific type.
420
 *
421
 * @{
422
 */
423
#define fr_box_is_null(_x)      fr_type_is_null((_x)->type)
424
#define fr_box_is_string(_x)      fr_type_is_string((_x)->type)
425
#define fr_box_is_octets(_x)      fr_type_is_octets((_x)->type)
426
#define fr_box_is_ipv4addr(_x)      fr_type_is_ipv4addr((_x)->type)
427
#define fr_box_is_ipv4prefix(_x)    fr_type_is_ipv4prefix((_x)->type)
428
#define fr_box_is_ipv6addr(_x)      fr_type_is_ipv6addr((_x)->type)
429
#define fr_box_is_ipv6prefix(_x)    fr_type_is_ipv6prefix((_x)->type)
430
#define fr_box_is_ifid(_x)      fr_type_is_ifid((_x)->type)
431
#define fr_box_is_combo_ipaddr(_x)    fr_type_is_combo_ipaddr((_x)->type)
432
#define fr_box_is_combo_ipprefix(_x)    fr_type_is_combo_ipprefix((_x)->type)
433
#define fr_box_is_ethernet(_x)      fr_type_is_ethernet((_x)->type)
434
#define fr_box_is_bool(_x)      fr_type_is_bool((_x)->type)
435
#define fr_box_is_uint8(_x)     fr_type_is_uint8((_x)->type)
436
#define fr_box_is_uint16(_x)      fr_type_is_uint16((_x)->type)
437
#define fr_box_is_uint32(_x)      fr_type_is_uint32((_x)->type)
438
#define fr_box_is_uint64(_x)      fr_type_is_uint64((_x)->type)
439
#define fr_box_is_int8(_x)      fr_type_is_int8((_x)->type)
440
#define fr_box_is_int16(_x)     fr_type_is_int16((_x)->type)
441
#define fr_box_is_int32(_x)     fr_type_is_int32((_x)->type)
442
#define fr_box_is_int64(_x)     fr_type_is_int64((_x)->type)
443
#define fr_box_is_float32(_x)     fr_type_is_float32((_x)->type)
444
#define fr_box_is_float64(_x)     fr_type_is_float64((_x)->type)
445
#define fr_box_is_date(_x)      fr_type_is_date((_x)->type)
446
#define fr_box_is_time_delta(_x)    fr_type_is_time_delta((_x)->type)
447
#define fr_box_is_size(_x)      fr_type_is_size((_x)->type)
448
#define fr_box_is_tlv(_x)     fr_type_is_tlv((_x)->type)
449
#define fr_box_is_struct(_x)      fr_type_is_struct((_x)->type)
450
#define fr_box_is_vsa(_x)     fr_type_is_vsa((_x)->type)
451
#define fr_box_is_vendor(_x)      fr_type_is_vendor((_x)->type)
452
#define fr_box_is_group(_x)     fr_type_is_group((_x)->type)
453
#define fr_box_is_value_box(_x)     fr_type_is_value_box((_x)->type)
454
#define fr_box_is_void(_x)      fr_type_is_void((_x)->type)
455
456
#define fr_box_is_integer_except_bool(_x) fr_type_is_integer_except_bool((_x)->type)
457
#define fr_box_is_integer(_x)     fr_type_is_integer((_x)->type)
458
0
#define fr_box_is_numeric(_x)     fr_type_is_numeric((_x)->type)
459
460
#define fr_box_is_ip(_x)      fr_type_is_ip((_x)->type)
461
462
#define fr_box_is_fixed_size(_x)    fr_type_is_fixed_size((_x)->type)
463
#define fr_box_is_variable_size(_x)   fr_type_is_variable_size((_x)->type)
464
#define fr_box_is_value(_x)     fr_type_is_value((_x)->type)
465
#define fr_box_is_quoted(_x)      fr_type_is_quoted((_x)->type)
466
467
#define fr_box_is_structural_except_vsa(_x) fr_type_is_structural_except_vsa((_x)->type)
468
#define fr_box_is_structural(_x)    fr_type_is_structural((_x)->type)
469
#define fr_box_is_non_value(_x)     fr_type_is_non_value((_x)->type)
470
/** @} */
471
472
/** @name Parsing rules for various types of string
473
 *
474
 * @{
475
 */
476
extern fr_sbuff_parse_rules_t const value_parse_rules_bareword_unquoted;
477
extern fr_sbuff_parse_rules_t const value_parse_rules_double_unquoted;
478
extern fr_sbuff_parse_rules_t const value_parse_rules_single_unquoted;
479
extern fr_sbuff_parse_rules_t const value_parse_rules_solidus_unquoted;
480
extern fr_sbuff_parse_rules_t const value_parse_rules_backtick_unquoted;
481
extern fr_sbuff_parse_rules_t const *value_parse_rules_unquoted[T_TOKEN_LAST];
482
extern fr_sbuff_parse_rules_t const *value_parse_rules_unquoted_char[UINT8_MAX];
483
484
extern fr_sbuff_parse_rules_t const value_parse_rules_bareword_quoted;
485
extern fr_sbuff_parse_rules_t const value_parse_rules_double_quoted;
486
extern fr_sbuff_parse_rules_t const value_parse_rules_single_quoted;
487
extern fr_sbuff_parse_rules_t const value_parse_rules_solidus_quoted;
488
extern fr_sbuff_parse_rules_t const value_parse_rules_backtick_quoted;
489
extern fr_sbuff_parse_rules_t const *value_parse_rules_quoted[T_TOKEN_LAST];
490
extern fr_sbuff_parse_rules_t const *value_parse_rules_quoted_char[UINT8_MAX];
491
492
extern fr_sbuff_parse_rules_t const value_parse_rules_double_3quoted;
493
extern fr_sbuff_parse_rules_t const value_parse_rules_single_3quoted;
494
extern fr_sbuff_parse_rules_t const value_parse_rules_solidus_3quoted;
495
extern fr_sbuff_parse_rules_t const value_parse_rules_backtick_3quoted;
496
extern fr_sbuff_parse_rules_t const *value_parse_rules_3quoted[T_TOKEN_LAST];
497
/** @} */
498
499
/** @name Allocation and initialisation functions
500
 *
501
 * These macros and inline functions simplify working
502
 * with lists of value boxes.
503
 *
504
 * @{
505
 */
506
/** A static initialiser for stack/globally allocated boxes
507
 *
508
 * We can only safely initialise a null box, as many other type need special initialisation
509
 */
510
#define FR_VALUE_BOX_INITIALISER_NULL(_vb) \
511
19.9k
  { \
512
19.9k
    .type = FR_TYPE_NULL, \
513
19.9k
    .entry = { \
514
19.9k
      .entry = FR_DLIST_ENTRY_INITIALISER((_vb).entry.entry) \
515
19.9k
    }, \
516
19.9k
    VALUE_BOX_NDEBUG_INITIALISER \
517
19.9k
  }
518
519
/** A static initialiser for stack/globally allocated boxes
520
 *
521
 */
522
#define FR_VALUE_BOX_INITIALISER(_vb, _type, _field, _val) \
523
  { \
524
    .type = _type, \
525
    .datum = { \
526
      _field = _val, \
527
    }, \
528
    .entry = { \
529
      .entry = FR_DLIST_ENTRY_INITIALISER((_vb).entry.entry) \
530
    }, \
531
    VALUE_BOX_NDEBUG_INITIALISER \
532
  }
533
534
static inline CC_HINT(nonnull(1), always_inline)
535
void _fr_value_box_init(NDEBUG_LOCATION_ARGS fr_value_box_t *vb, fr_type_t type, fr_dict_attr_t const *enumv, bool tainted)
536
4.28M
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
4.28M
  memcpy((void *) vb, &(fr_value_box_t){
550
4.28M
      .type = type,
551
4.28M
      .enumv = enumv,
552
4.28M
      .tainted = tainted,
553
4.28M
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
4.28M
    }, sizeof(*vb));
556
4.28M
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
4.28M
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
52.7k
  case FR_TYPE_IPV4_ADDR:
568
58.8k
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
58.8k
    vb->vb_ip.af = AF_INET;
570
58.8k
    vb->vb_ip.prefix = 32;
571
58.8k
    break;
572
573
20.8k
  case FR_TYPE_IPV4_PREFIX:
574
21.6k
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
21.6k
    vb->vb_ip.af = AF_INET;
576
21.6k
    break;
577
578
6.78k
  case FR_TYPE_IPV6_ADDR:
579
6.78k
    vb->vb_ip.af = AF_INET6;
580
6.78k
    vb->vb_ip.prefix = 128;
581
6.78k
    break;
582
583
5.02k
  case FR_TYPE_IPV6_PREFIX:
584
5.02k
    vb->vb_ip.af = AF_INET6;
585
5.02k
    break;
586
587
4.19M
  default:
588
4.19M
    break;
589
4.28M
  }
590
591
4.28M
#ifndef NDEBUG
592
4.28M
  vb->magic = FR_VALUE_BOX_MAGIC;
593
4.28M
  vb->file = file;
594
4.28M
  vb->line = line;
595
4.28M
#endif
596
4.28M
}
Unexecuted instantiation: fuzzer_dhcpv6.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_util.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_dhcpv4.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_cbor.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_der.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_dns.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_tacacs.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_bfd.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_radius.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_tftp.c:_fr_value_box_init
Unexecuted instantiation: fuzzer_vmps.c:_fr_value_box_init
Unexecuted instantiation: base32.c:_fr_value_box_init
Unexecuted instantiation: base64.c:_fr_value_box_init
Unexecuted instantiation: calc.c:_fr_value_box_init
Unexecuted instantiation: cbor.c:_fr_value_box_init
Unexecuted instantiation: decode.c:_fr_value_box_init
Unexecuted instantiation: dict_ext.c:_fr_value_box_init
Unexecuted instantiation: dict_fixup.c:_fr_value_box_init
Unexecuted instantiation: dict_print.c:_fr_value_box_init
Unexecuted instantiation: dict_test.c:_fr_value_box_init
dict_tokenize.c:_fr_value_box_init
Line
Count
Source
536
160
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
160
  memcpy((void *) vb, &(fr_value_box_t){
550
160
      .type = type,
551
160
      .enumv = enumv,
552
160
      .tainted = tainted,
553
160
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
160
    }, sizeof(*vb));
556
160
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
160
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
0
  case FR_TYPE_IPV4_ADDR:
568
0
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
0
    vb->vb_ip.af = AF_INET;
570
0
    vb->vb_ip.prefix = 32;
571
0
    break;
572
573
0
  case FR_TYPE_IPV4_PREFIX:
574
0
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
0
    vb->vb_ip.af = AF_INET;
576
0
    break;
577
578
0
  case FR_TYPE_IPV6_ADDR:
579
0
    vb->vb_ip.af = AF_INET6;
580
0
    vb->vb_ip.prefix = 128;
581
0
    break;
582
583
0
  case FR_TYPE_IPV6_PREFIX:
584
0
    vb->vb_ip.af = AF_INET6;
585
0
    break;
586
587
160
  default:
588
160
    break;
589
160
  }
590
591
160
#ifndef NDEBUG
592
160
  vb->magic = FR_VALUE_BOX_MAGIC;
593
160
  vb->file = file;
594
160
  vb->line = line;
595
160
#endif
596
160
}
Unexecuted instantiation: dict_unknown.c:_fr_value_box_init
dict_util.c:_fr_value_box_init
Line
Count
Source
536
32.5k
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
32.5k
  memcpy((void *) vb, &(fr_value_box_t){
550
32.5k
      .type = type,
551
32.5k
      .enumv = enumv,
552
32.5k
      .tainted = tainted,
553
32.5k
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
32.5k
    }, sizeof(*vb));
556
32.5k
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
32.5k
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
1.15k
  case FR_TYPE_IPV4_ADDR:
568
1.21k
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
1.21k
    vb->vb_ip.af = AF_INET;
570
1.21k
    vb->vb_ip.prefix = 32;
571
1.21k
    break;
572
573
68
  case FR_TYPE_IPV4_PREFIX:
574
84
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
84
    vb->vb_ip.af = AF_INET;
576
84
    break;
577
578
260
  case FR_TYPE_IPV6_ADDR:
579
260
    vb->vb_ip.af = AF_INET6;
580
260
    vb->vb_ip.prefix = 128;
581
260
    break;
582
583
82
  case FR_TYPE_IPV6_PREFIX:
584
82
    vb->vb_ip.af = AF_INET6;
585
82
    break;
586
587
30.8k
  default:
588
30.8k
    break;
589
32.5k
  }
590
591
32.5k
#ifndef NDEBUG
592
32.5k
  vb->magic = FR_VALUE_BOX_MAGIC;
593
32.5k
  vb->file = file;
594
32.5k
  vb->line = line;
595
32.5k
#endif
596
32.5k
}
Unexecuted instantiation: dict_validate.c:_fr_value_box_init
Unexecuted instantiation: dl.c:_fr_value_box_init
dns.c:_fr_value_box_init
Line
Count
Source
536
35.1k
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
35.1k
  memcpy((void *) vb, &(fr_value_box_t){
550
35.1k
      .type = type,
551
35.1k
      .enumv = enumv,
552
35.1k
      .tainted = tainted,
553
35.1k
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
35.1k
    }, sizeof(*vb));
556
35.1k
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
35.1k
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
0
  case FR_TYPE_IPV4_ADDR:
568
0
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
0
    vb->vb_ip.af = AF_INET;
570
0
    vb->vb_ip.prefix = 32;
571
0
    break;
572
573
0
  case FR_TYPE_IPV4_PREFIX:
574
0
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
0
    vb->vb_ip.af = AF_INET;
576
0
    break;
577
578
0
  case FR_TYPE_IPV6_ADDR:
579
0
    vb->vb_ip.af = AF_INET6;
580
0
    vb->vb_ip.prefix = 128;
581
0
    break;
582
583
0
  case FR_TYPE_IPV6_PREFIX:
584
0
    vb->vb_ip.af = AF_INET6;
585
0
    break;
586
587
35.1k
  default:
588
35.1k
    break;
589
35.1k
  }
590
591
35.1k
#ifndef NDEBUG
592
35.1k
  vb->magic = FR_VALUE_BOX_MAGIC;
593
35.1k
  vb->file = file;
594
35.1k
  vb->line = line;
595
35.1k
#endif
596
35.1k
}
Unexecuted instantiation: edit.c:_fr_value_box_init
Unexecuted instantiation: encode.c:_fr_value_box_init
Unexecuted instantiation: timer.c:_fr_value_box_init
Unexecuted instantiation: file.c:_fr_value_box_init
Unexecuted instantiation: inet.c:_fr_value_box_init
Unexecuted instantiation: log.c:_fr_value_box_init
Unexecuted instantiation: packet.c:_fr_value_box_init
pair.c:_fr_value_box_init
Line
Count
Source
536
2.15M
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
2.15M
  memcpy((void *) vb, &(fr_value_box_t){
550
2.15M
      .type = type,
551
2.15M
      .enumv = enumv,
552
2.15M
      .tainted = tainted,
553
2.15M
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
2.15M
    }, sizeof(*vb));
556
2.15M
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
2.15M
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
33.1k
  case FR_TYPE_IPV4_ADDR:
568
36.0k
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
36.0k
    vb->vb_ip.af = AF_INET;
570
36.0k
    vb->vb_ip.prefix = 32;
571
36.0k
    break;
572
573
10.3k
  case FR_TYPE_IPV4_PREFIX:
574
10.6k
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
10.6k
    vb->vb_ip.af = AF_INET;
576
10.6k
    break;
577
578
4.11k
  case FR_TYPE_IPV6_ADDR:
579
4.11k
    vb->vb_ip.af = AF_INET6;
580
4.11k
    vb->vb_ip.prefix = 128;
581
4.11k
    break;
582
583
3.65k
  case FR_TYPE_IPV6_PREFIX:
584
3.65k
    vb->vb_ip.af = AF_INET6;
585
3.65k
    break;
586
587
2.09M
  default:
588
2.09M
    break;
589
2.15M
  }
590
591
2.15M
#ifndef NDEBUG
592
2.15M
  vb->magic = FR_VALUE_BOX_MAGIC;
593
2.15M
  vb->file = file;
594
2.15M
  vb->line = line;
595
2.15M
#endif
596
2.15M
}
Unexecuted instantiation: pair_inline.c:_fr_value_box_init
Unexecuted instantiation: pair_legacy.c:_fr_value_box_init
Unexecuted instantiation: pair_print.c:_fr_value_box_init
Unexecuted instantiation: pair_tokenize.c:_fr_value_box_init
Unexecuted instantiation: print.c:_fr_value_box_init
Unexecuted instantiation: proto.c:_fr_value_box_init
Unexecuted instantiation: regex.c:_fr_value_box_init
Unexecuted instantiation: socket.c:_fr_value_box_init
Unexecuted instantiation: stats.c:_fr_value_box_init
Unexecuted instantiation: struct.c:_fr_value_box_init
Unexecuted instantiation: types.c:_fr_value_box_init
Unexecuted instantiation: uri.c:_fr_value_box_init
value.c:_fr_value_box_init
Line
Count
Source
536
2.05M
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
2.05M
  memcpy((void *) vb, &(fr_value_box_t){
550
2.05M
      .type = type,
551
2.05M
      .enumv = enumv,
552
2.05M
      .tainted = tainted,
553
2.05M
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
2.05M
    }, sizeof(*vb));
556
2.05M
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
2.05M
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
18.2k
  case FR_TYPE_IPV4_ADDR:
568
21.0k
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
21.0k
    vb->vb_ip.af = AF_INET;
570
21.0k
    vb->vb_ip.prefix = 32;
571
21.0k
    break;
572
573
1.95k
  case FR_TYPE_IPV4_PREFIX:
574
2.24k
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
2.24k
    vb->vb_ip.af = AF_INET;
576
2.24k
    break;
577
578
2.35k
  case FR_TYPE_IPV6_ADDR:
579
2.35k
    vb->vb_ip.af = AF_INET6;
580
2.35k
    vb->vb_ip.prefix = 128;
581
2.35k
    break;
582
583
1.25k
  case FR_TYPE_IPV6_PREFIX:
584
1.25k
    vb->vb_ip.af = AF_INET6;
585
1.25k
    break;
586
587
2.02M
  default:
588
2.02M
    break;
589
2.05M
  }
590
591
2.05M
#ifndef NDEBUG
592
2.05M
  vb->magic = FR_VALUE_BOX_MAGIC;
593
2.05M
  vb->file = file;
594
2.05M
  vb->line = line;
595
2.05M
#endif
596
2.05M
}
fuzzer.c:_fr_value_box_init
Line
Count
Source
536
4.90k
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
4.90k
  memcpy((void *) vb, &(fr_value_box_t){
550
4.90k
      .type = type,
551
4.90k
      .enumv = enumv,
552
4.90k
      .tainted = tainted,
553
4.90k
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
4.90k
    }, sizeof(*vb));
556
4.90k
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
4.90k
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
265
  case FR_TYPE_IPV4_ADDR:
568
529
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
529
    vb->vb_ip.af = AF_INET;
570
529
    vb->vb_ip.prefix = 32;
571
529
    break;
572
573
140
  case FR_TYPE_IPV4_PREFIX:
574
270
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
270
    vb->vb_ip.af = AF_INET;
576
270
    break;
577
578
64
  case FR_TYPE_IPV6_ADDR:
579
64
    vb->vb_ip.af = AF_INET6;
580
64
    vb->vb_ip.prefix = 128;
581
64
    break;
582
583
41
  case FR_TYPE_IPV6_PREFIX:
584
41
    vb->vb_ip.af = AF_INET6;
585
41
    break;
586
587
4.00k
  default:
588
4.00k
    break;
589
4.90k
  }
590
591
4.90k
#ifndef NDEBUG
592
4.90k
  vb->magic = FR_VALUE_BOX_MAGIC;
593
4.90k
  vb->file = file;
594
4.90k
  vb->line = line;
595
4.90k
#endif
596
4.90k
}
Unexecuted instantiation: base.c:_fr_value_box_init
decode.c:_fr_value_box_init
Line
Count
Source
536
8.32k
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
8.32k
  memcpy((void *) vb, &(fr_value_box_t){
550
8.32k
      .type = type,
551
8.32k
      .enumv = enumv,
552
8.32k
      .tainted = tainted,
553
8.32k
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
8.32k
    }, sizeof(*vb));
556
8.32k
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
8.32k
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
0
  case FR_TYPE_IPV4_ADDR:
568
0
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
0
    vb->vb_ip.af = AF_INET;
570
0
    vb->vb_ip.prefix = 32;
571
0
    break;
572
573
8.32k
  case FR_TYPE_IPV4_PREFIX:
574
8.32k
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
8.32k
    vb->vb_ip.af = AF_INET;
576
8.32k
    break;
577
578
0
  case FR_TYPE_IPV6_ADDR:
579
0
    vb->vb_ip.af = AF_INET6;
580
0
    vb->vb_ip.prefix = 128;
581
0
    break;
582
583
0
  case FR_TYPE_IPV6_PREFIX:
584
0
    vb->vb_ip.af = AF_INET6;
585
0
    break;
586
587
0
  default:
588
0
    break;
589
8.32k
  }
590
591
8.32k
#ifndef NDEBUG
592
8.32k
  vb->magic = FR_VALUE_BOX_MAGIC;
593
8.32k
  vb->file = file;
594
8.32k
  vb->line = line;
595
8.32k
#endif
596
8.32k
}
Unexecuted instantiation: raw.c:_fr_value_box_init
Unexecuted instantiation: udp.c:_fr_value_box_init
base.c:_fr_value_box_init
Line
Count
Source
536
6
{
537
  /*
538
   *  Initializes an fr_value_box_t pointed at by vb appropriately for a given type.
539
   *  Coverity gets involved here because an fr_value_box_t has members with const-
540
   *  qualified type (and members that have members with const-qualified type), so an
541
   *  attempt to assign to *vb or any of its cosnt-qualified members will give an error.
542
   *
543
   *  C compilers, at least currently, let one get around the issue. See the memcpy()
544
   *  below. Coverity, though, isn't faked out, and reports the store_writes_const_field
545
   *  defect annotated here. Anything we do has to eventually assign to the whole of *vb
546
   *  and thus will raise the issue.
547
   */
548
  /* coverity[store_writes_const_field] */
549
6
  memcpy((void *) vb, &(fr_value_box_t){
550
6
      .type = type,
551
6
      .enumv = enumv,
552
6
      .tainted = tainted,
553
6
      .secret = enumv && enumv->flags.secret,
554
      /* don't set the immutable flag.  The caller has to do it once he's finished editing the values */
555
6
    }, sizeof(*vb));
556
6
  fr_value_box_list_entry_init(vb);
557
558
  /*
559
   *  The majority of types are fine to initialise to
560
   *  all zeros, the following are the exceptions.
561
   */
562
6
  switch (type) {
563
0
  case FR_TYPE_STRUCTURAL:
564
0
    fr_value_box_list_init(&vb->vb_group);
565
0
    break;
566
567
0
  case FR_TYPE_IPV4_ADDR:
568
0
  case FR_TYPE_COMBO_IP_ADDR: /* Default to the smaller type */
569
0
    vb->vb_ip.af = AF_INET;
570
0
    vb->vb_ip.prefix = 32;
571
0
    break;
572
573
0
  case FR_TYPE_IPV4_PREFIX:
574
0
  case FR_TYPE_COMBO_IP_PREFIX: /* Default to the samaller type */
575
0
    vb->vb_ip.af = AF_INET;
576
0
    break;
577
578
0
  case FR_TYPE_IPV6_ADDR:
579
0
    vb->vb_ip.af = AF_INET6;
580
0
    vb->vb_ip.prefix = 128;
581
0
    break;
582
583
0
  case FR_TYPE_IPV6_PREFIX:
584
0
    vb->vb_ip.af = AF_INET6;
585
0
    break;
586
587
6
  default:
588
6
    break;
589
6
  }
590
591
6
#ifndef NDEBUG
592
6
  vb->magic = FR_VALUE_BOX_MAGIC;
593
6
  vb->file = file;
594
6
  vb->line = line;
595
6
#endif
596
6
}
Unexecuted instantiation: encode.c:_fr_value_box_init
Unexecuted instantiation: list.c:_fr_value_box_init
Unexecuted instantiation: tcp.c:_fr_value_box_init
Unexecuted instantiation: abinary.c:_fr_value_box_init
Unexecuted instantiation: vmps.c:_fr_value_box_init
597
598
/** Initialise a fr_value_box_t
599
 *
600
 * The value should be set later with one of the fr_value_box_* functions.
601
 *
602
 * @param[in] _vb to initialise.
603
 * @param[in] _type to set.
604
 * @param[in] _enumv  Enumeration values.
605
 * @param[in] _tainted  Whether data will come from an untrusted source.
606
 *
607
 * @hidecallergraph
608
 */
609
4.22M
#define fr_value_box_init(_vb, _type, _enumv, _tainted) _fr_value_box_init(NDEBUG_LOCATION_EXP _vb, _type, _enumv, _tainted)
610
611
/** Initialise an empty/null box that will be filled later
612
 *
613
 * @param[in] _vb to initialise.
614
 */
615
35.1k
#define fr_value_box_init_null(_vb) _fr_value_box_init(NDEBUG_LOCATION_EXP _vb, FR_TYPE_NULL, NULL, false)
616
617
static inline CC_HINT(always_inline)
618
fr_value_box_t *_fr_value_box_alloc(NDEBUG_LOCATION_ARGS TALLOC_CTX *ctx, fr_type_t type, fr_dict_attr_t const *enumv)
619
25.8k
{
620
25.8k
  fr_value_box_t *vb;
621
622
25.8k
  vb = talloc(ctx, fr_value_box_t);
623
25.8k
  if (unlikely(!vb)) return NULL;
624
625
25.8k
  _fr_value_box_init(NDEBUG_LOCATION_VALS vb, type, enumv, false);
626
25.8k
  vb->talloced = 1;
627
628
25.8k
  return vb;
629
25.8k
}
Unexecuted instantiation: fuzzer_dhcpv6.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_util.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_dhcpv4.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_cbor.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_der.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_dns.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_tacacs.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_bfd.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_radius.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_tftp.c:_fr_value_box_alloc
Unexecuted instantiation: fuzzer_vmps.c:_fr_value_box_alloc
Unexecuted instantiation: base32.c:_fr_value_box_alloc
Unexecuted instantiation: base64.c:_fr_value_box_alloc
Unexecuted instantiation: calc.c:_fr_value_box_alloc
Unexecuted instantiation: cbor.c:_fr_value_box_alloc
Unexecuted instantiation: decode.c:_fr_value_box_alloc
Unexecuted instantiation: dict_ext.c:_fr_value_box_alloc
Unexecuted instantiation: dict_fixup.c:_fr_value_box_alloc
Unexecuted instantiation: dict_print.c:_fr_value_box_alloc
Unexecuted instantiation: dict_test.c:_fr_value_box_alloc
Unexecuted instantiation: dict_tokenize.c:_fr_value_box_alloc
Unexecuted instantiation: dict_unknown.c:_fr_value_box_alloc
dict_util.c:_fr_value_box_alloc
Line
Count
Source
619
20.9k
{
620
20.9k
  fr_value_box_t *vb;
621
622
20.9k
  vb = talloc(ctx, fr_value_box_t);
623
20.9k
  if (unlikely(!vb)) return NULL;
624
625
20.9k
  _fr_value_box_init(NDEBUG_LOCATION_VALS vb, type, enumv, false);
626
20.9k
  vb->talloced = 1;
627
628
20.9k
  return vb;
629
20.9k
}
Unexecuted instantiation: dict_validate.c:_fr_value_box_alloc
Unexecuted instantiation: dl.c:_fr_value_box_alloc
Unexecuted instantiation: dns.c:_fr_value_box_alloc
Unexecuted instantiation: edit.c:_fr_value_box_alloc
Unexecuted instantiation: encode.c:_fr_value_box_alloc
Unexecuted instantiation: timer.c:_fr_value_box_alloc
Unexecuted instantiation: file.c:_fr_value_box_alloc
Unexecuted instantiation: inet.c:_fr_value_box_alloc
Unexecuted instantiation: log.c:_fr_value_box_alloc
Unexecuted instantiation: packet.c:_fr_value_box_alloc
Unexecuted instantiation: pair.c:_fr_value_box_alloc
Unexecuted instantiation: pair_inline.c:_fr_value_box_alloc
Unexecuted instantiation: pair_legacy.c:_fr_value_box_alloc
Unexecuted instantiation: pair_print.c:_fr_value_box_alloc
Unexecuted instantiation: pair_tokenize.c:_fr_value_box_alloc
Unexecuted instantiation: print.c:_fr_value_box_alloc
Unexecuted instantiation: proto.c:_fr_value_box_alloc
Unexecuted instantiation: regex.c:_fr_value_box_alloc
Unexecuted instantiation: socket.c:_fr_value_box_alloc
Unexecuted instantiation: stats.c:_fr_value_box_alloc
Unexecuted instantiation: struct.c:_fr_value_box_alloc
Unexecuted instantiation: types.c:_fr_value_box_alloc
Unexecuted instantiation: uri.c:_fr_value_box_alloc
Unexecuted instantiation: value.c:_fr_value_box_alloc
fuzzer.c:_fr_value_box_alloc
Line
Count
Source
619
4.90k
{
620
4.90k
  fr_value_box_t *vb;
621
622
4.90k
  vb = talloc(ctx, fr_value_box_t);
623
4.90k
  if (unlikely(!vb)) return NULL;
624
625
4.90k
  _fr_value_box_init(NDEBUG_LOCATION_VALS vb, type, enumv, false);
626
4.90k
  vb->talloced = 1;
627
628
4.90k
  return vb;
629
4.90k
}
Unexecuted instantiation: raw.c:_fr_value_box_alloc
Unexecuted instantiation: udp.c:_fr_value_box_alloc
base.c:_fr_value_box_alloc
Line
Count
Source
619
6
{
620
6
  fr_value_box_t *vb;
621
622
6
  vb = talloc(ctx, fr_value_box_t);
623
6
  if (unlikely(!vb)) return NULL;
624
625
6
  _fr_value_box_init(NDEBUG_LOCATION_VALS vb, type, enumv, false);
626
6
  vb->talloced = 1;
627
628
6
  return vb;
629
6
}
Unexecuted instantiation: list.c:_fr_value_box_alloc
Unexecuted instantiation: tcp.c:_fr_value_box_alloc
Unexecuted instantiation: abinary.c:_fr_value_box_alloc
Unexecuted instantiation: vmps.c:_fr_value_box_alloc
630
631
/** Allocate a value box of a specific type
632
 *
633
 * Allocates memory for the box, and sets the length of the value
634
 * for fixed length types.
635
 *
636
 * @param[in] _ctx  to allocate the value_box in.
637
 * @param[in] _type of value.
638
 * @param[in] _enumv  Enumeration values.
639
 * @return
640
 *  - A new fr_value_box_t.
641
 *  - NULL on error.
642
 */
643
25.8k
#define fr_value_box_alloc(_ctx, _type, _enumv) _fr_value_box_alloc(NDEBUG_LOCATION_EXP _ctx, _type, _enumv)
644
645
/** Allocate a value box for later use with a value assignment function
646
 *
647
 * @param[in] _ctx  to allocate the value_box in.
648
 * @return
649
 *  - A new fr_value_box_t.
650
 *  - NULL on error.
651
 *
652
 *  @hidecallergraph
653
 */
654
0
#define fr_value_box_alloc_null(_ctx) _fr_value_box_alloc(NDEBUG_LOCATION_EXP _ctx, FR_TYPE_NULL, NULL)
655
656
/** @} */
657
658
/** @name Escape functions
659
 *
660
 * Apply a transformation to a value box or list of value boxes.
661
 *
662
 * @{
663
 */
664
665
 /** Escape a value box
666
  *
667
  * @param[in] vb to escape.
668
  * @param[in] uctx user context to pass to the escape function.
669
  * @return
670
  * - 0 on success.
671
  * - -1 on failure.
672
  */
673
typedef int (*fr_value_box_escape_func_t)(fr_value_box_t *vb, void *uctx);
674
675
typedef struct {
676
  fr_value_box_escape_func_t  func;
677
  fr_value_box_safe_for_t   safe_for;
678
  bool        always_escape;
679
} fr_value_box_escape_t;
680
681
int fr_value_box_escape_in_place(fr_value_box_t *vb, fr_value_box_escape_t const *escape, void *uctx)
682
         CC_HINT(nonnull(1,2));
683
int fr_value_box_list_escape_in_place(fr_value_box_list_t *list, fr_value_box_escape_t const *escape, void *uctx)
684
              CC_HINT(nonnull(1,2));
685
/** @} */
686
687
/** @name Convenience functions
688
 *
689
 * These macros and inline functions simplify working
690
 * with lists of value boxes.
691
 *
692
 * @{
693
 */
694
/** Determines whether a list contains the number of boxes required
695
 *
696
 * @param[in] list  of value boxes.
697
 * @param[in] min The number of boxes required to return true.
698
 * @return
699
 *  - true if the list has at least min boxes.
700
 *  - false if the list has fewer than min boxes.
701
 */
702
static inline CC_HINT(nonnull)
703
bool fr_value_box_list_len_min(fr_value_box_list_t const *list, unsigned int min)
704
0
{
705
0
  unsigned int i = fr_value_box_list_num_elements(list);
706
0
707
0
  return (i >= min);
708
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_util.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_der.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_list_len_min
Unexecuted instantiation: base32.c:fr_value_box_list_len_min
Unexecuted instantiation: base64.c:fr_value_box_list_len_min
Unexecuted instantiation: calc.c:fr_value_box_list_len_min
Unexecuted instantiation: cbor.c:fr_value_box_list_len_min
Unexecuted instantiation: decode.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_ext.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_fixup.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_print.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_test.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_tokenize.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_unknown.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_util.c:fr_value_box_list_len_min
Unexecuted instantiation: dict_validate.c:fr_value_box_list_len_min
Unexecuted instantiation: dl.c:fr_value_box_list_len_min
Unexecuted instantiation: dns.c:fr_value_box_list_len_min
Unexecuted instantiation: edit.c:fr_value_box_list_len_min
Unexecuted instantiation: encode.c:fr_value_box_list_len_min
Unexecuted instantiation: timer.c:fr_value_box_list_len_min
Unexecuted instantiation: file.c:fr_value_box_list_len_min
Unexecuted instantiation: inet.c:fr_value_box_list_len_min
Unexecuted instantiation: log.c:fr_value_box_list_len_min
Unexecuted instantiation: packet.c:fr_value_box_list_len_min
Unexecuted instantiation: pair.c:fr_value_box_list_len_min
Unexecuted instantiation: pair_inline.c:fr_value_box_list_len_min
Unexecuted instantiation: pair_legacy.c:fr_value_box_list_len_min
Unexecuted instantiation: pair_print.c:fr_value_box_list_len_min
Unexecuted instantiation: pair_tokenize.c:fr_value_box_list_len_min
Unexecuted instantiation: print.c:fr_value_box_list_len_min
Unexecuted instantiation: proto.c:fr_value_box_list_len_min
Unexecuted instantiation: regex.c:fr_value_box_list_len_min
Unexecuted instantiation: socket.c:fr_value_box_list_len_min
Unexecuted instantiation: stats.c:fr_value_box_list_len_min
Unexecuted instantiation: struct.c:fr_value_box_list_len_min
Unexecuted instantiation: types.c:fr_value_box_list_len_min
Unexecuted instantiation: uri.c:fr_value_box_list_len_min
Unexecuted instantiation: value.c:fr_value_box_list_len_min
Unexecuted instantiation: fuzzer.c:fr_value_box_list_len_min
Unexecuted instantiation: base.c:fr_value_box_list_len_min
Unexecuted instantiation: raw.c:fr_value_box_list_len_min
Unexecuted instantiation: udp.c:fr_value_box_list_len_min
Unexecuted instantiation: list.c:fr_value_box_list_len_min
Unexecuted instantiation: tcp.c:fr_value_box_list_len_min
Unexecuted instantiation: abinary.c:fr_value_box_list_len_min
Unexecuted instantiation: vmps.c:fr_value_box_list_len_min
709
/** @} */
710
711
/** @name Box to box copying
712
 *
713
 * @{
714
 */
715
void    fr_value_box_clear_value(fr_value_box_t *data)
716
    CC_HINT(nonnull(1));
717
718
void    fr_value_box_clear(fr_value_box_t *data)
719
    CC_HINT(nonnull(1));
720
721
int   fr_value_box_copy(TALLOC_CTX *ctx, fr_value_box_t *dst, const fr_value_box_t *src)
722
    CC_HINT(nonnull(2,3)) CC_HINT(warn_unused_result);
723
724
void    fr_value_box_copy_shallow(TALLOC_CTX *ctx, fr_value_box_t *dst,
725
            const fr_value_box_t *src)
726
    CC_HINT(nonnull(2,3));
727
728
int   fr_value_box_steal(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_value_box_t *src)
729
    CC_HINT(nonnull(2,3));
730
731
/** Copy an existing box, allocating a new box to hold its contents
732
 *
733
 * @param[in] ctx to allocate new box in.
734
 * @param[in] src box to copy.
735
 */
736
static inline CC_HINT(nonnull(2))
737
fr_value_box_t *fr_value_box_acopy(TALLOC_CTX *ctx, fr_value_box_t const *src)
738
0
{
739
0
  fr_value_box_t *vb = fr_value_box_alloc_null(ctx);
740
0
  if (unlikely(!vb)) return NULL;
741
0
742
0
  if ((unlikely(fr_value_box_copy(vb, vb, src) < 0))) {
743
0
    talloc_free(vb);
744
0
    return NULL;
745
0
  }
746
0
747
0
  return vb;
748
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_util.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_der.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_acopy
Unexecuted instantiation: base32.c:fr_value_box_acopy
Unexecuted instantiation: base64.c:fr_value_box_acopy
Unexecuted instantiation: calc.c:fr_value_box_acopy
Unexecuted instantiation: cbor.c:fr_value_box_acopy
Unexecuted instantiation: decode.c:fr_value_box_acopy
Unexecuted instantiation: dict_ext.c:fr_value_box_acopy
Unexecuted instantiation: dict_fixup.c:fr_value_box_acopy
Unexecuted instantiation: dict_print.c:fr_value_box_acopy
Unexecuted instantiation: dict_test.c:fr_value_box_acopy
Unexecuted instantiation: dict_tokenize.c:fr_value_box_acopy
Unexecuted instantiation: dict_unknown.c:fr_value_box_acopy
Unexecuted instantiation: dict_util.c:fr_value_box_acopy
Unexecuted instantiation: dict_validate.c:fr_value_box_acopy
Unexecuted instantiation: dl.c:fr_value_box_acopy
Unexecuted instantiation: dns.c:fr_value_box_acopy
Unexecuted instantiation: edit.c:fr_value_box_acopy
Unexecuted instantiation: encode.c:fr_value_box_acopy
Unexecuted instantiation: timer.c:fr_value_box_acopy
Unexecuted instantiation: file.c:fr_value_box_acopy
Unexecuted instantiation: inet.c:fr_value_box_acopy
Unexecuted instantiation: log.c:fr_value_box_acopy
Unexecuted instantiation: packet.c:fr_value_box_acopy
Unexecuted instantiation: pair.c:fr_value_box_acopy
Unexecuted instantiation: pair_inline.c:fr_value_box_acopy
Unexecuted instantiation: pair_legacy.c:fr_value_box_acopy
Unexecuted instantiation: pair_print.c:fr_value_box_acopy
Unexecuted instantiation: pair_tokenize.c:fr_value_box_acopy
Unexecuted instantiation: print.c:fr_value_box_acopy
Unexecuted instantiation: proto.c:fr_value_box_acopy
Unexecuted instantiation: regex.c:fr_value_box_acopy
Unexecuted instantiation: socket.c:fr_value_box_acopy
Unexecuted instantiation: stats.c:fr_value_box_acopy
Unexecuted instantiation: struct.c:fr_value_box_acopy
Unexecuted instantiation: types.c:fr_value_box_acopy
Unexecuted instantiation: uri.c:fr_value_box_acopy
Unexecuted instantiation: value.c:fr_value_box_acopy
Unexecuted instantiation: fuzzer.c:fr_value_box_acopy
Unexecuted instantiation: base.c:fr_value_box_acopy
Unexecuted instantiation: raw.c:fr_value_box_acopy
Unexecuted instantiation: udp.c:fr_value_box_acopy
Unexecuted instantiation: list.c:fr_value_box_acopy
Unexecuted instantiation: tcp.c:fr_value_box_acopy
Unexecuted instantiation: abinary.c:fr_value_box_acopy
Unexecuted instantiation: vmps.c:fr_value_box_acopy
749
/** @} */
750
751
/** @name Value box assignment functions
752
 *
753
 * These functions allow C values to be assigned to value boxes.
754
 * They will work with uninitialised/stack allocated memory.
755
 *
756
 * @{
757
 */
758
759
/** Return a pointer to the "raw" value from a value-box.
760
 *
761
 *  This has "const" input and "unconst" output because sometimes it's used
762
 *  to copy out of, and sometimes in to, a value-box.  We rely on the caller to know
763
 *  the correct uses of it.
764
 */
765
static inline CC_HINT(always_inline)
766
uint8_t *fr_value_box_raw(fr_value_box_t const *vb, fr_type_t type)
767
73.6k
{
768
73.6k
  return UNCONST(uint8_t *, vb) + fr_value_box_offsets[type];
769
73.6k
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_util.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_der.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_raw
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_raw
Unexecuted instantiation: base32.c:fr_value_box_raw
Unexecuted instantiation: base64.c:fr_value_box_raw
Unexecuted instantiation: calc.c:fr_value_box_raw
Unexecuted instantiation: cbor.c:fr_value_box_raw
Unexecuted instantiation: decode.c:fr_value_box_raw
Unexecuted instantiation: dict_ext.c:fr_value_box_raw
Unexecuted instantiation: dict_fixup.c:fr_value_box_raw
Unexecuted instantiation: dict_print.c:fr_value_box_raw
Unexecuted instantiation: dict_test.c:fr_value_box_raw
Unexecuted instantiation: dict_tokenize.c:fr_value_box_raw
Unexecuted instantiation: dict_unknown.c:fr_value_box_raw
Unexecuted instantiation: dict_util.c:fr_value_box_raw
Unexecuted instantiation: dict_validate.c:fr_value_box_raw
Unexecuted instantiation: dl.c:fr_value_box_raw
Unexecuted instantiation: dns.c:fr_value_box_raw
Unexecuted instantiation: edit.c:fr_value_box_raw
Unexecuted instantiation: encode.c:fr_value_box_raw
Unexecuted instantiation: timer.c:fr_value_box_raw
Unexecuted instantiation: file.c:fr_value_box_raw
Unexecuted instantiation: inet.c:fr_value_box_raw
Unexecuted instantiation: log.c:fr_value_box_raw
Unexecuted instantiation: packet.c:fr_value_box_raw
Unexecuted instantiation: pair.c:fr_value_box_raw
Unexecuted instantiation: pair_inline.c:fr_value_box_raw
Unexecuted instantiation: pair_legacy.c:fr_value_box_raw
Unexecuted instantiation: pair_print.c:fr_value_box_raw
Unexecuted instantiation: pair_tokenize.c:fr_value_box_raw
Unexecuted instantiation: print.c:fr_value_box_raw
Unexecuted instantiation: proto.c:fr_value_box_raw
Unexecuted instantiation: regex.c:fr_value_box_raw
Unexecuted instantiation: socket.c:fr_value_box_raw
Unexecuted instantiation: stats.c:fr_value_box_raw
Unexecuted instantiation: struct.c:fr_value_box_raw
Unexecuted instantiation: types.c:fr_value_box_raw
Unexecuted instantiation: uri.c:fr_value_box_raw
value.c:fr_value_box_raw
Line
Count
Source
767
73.6k
{
768
73.6k
  return UNCONST(uint8_t *, vb) + fr_value_box_offsets[type];
769
73.6k
}
Unexecuted instantiation: fuzzer.c:fr_value_box_raw
Unexecuted instantiation: base.c:fr_value_box_raw
Unexecuted instantiation: raw.c:fr_value_box_raw
Unexecuted instantiation: udp.c:fr_value_box_raw
Unexecuted instantiation: list.c:fr_value_box_raw
Unexecuted instantiation: tcp.c:fr_value_box_raw
Unexecuted instantiation: abinary.c:fr_value_box_raw
Unexecuted instantiation: vmps.c:fr_value_box_raw
770
771
/** Copy the value of a value box to a field in a C struct
772
 *
773
 * This is useful when interacting with 3rd party libraries, and doing configuration parsing
774
 * as it allows us to use standard parsing and casting functions and then emit the result
775
 * as a C value.
776
 *
777
 * The field pointed to by out must be of the same type as we use to represent the value boxe's
778
 * value in its datum union, or at least the same size.
779
 *
780
 * No checks are done to ensure this is the case, so if you get this wrong it'll lead to silent
781
 * memory corruption.
782
 *
783
 * @param[out] out  Field in struct to write variable to.
784
 * @param[in] vb  to copy value from.
785
 * @return
786
 *  - 0 on success.
787
 *  - -1 on failure.
788
 */
789
static inline CC_HINT(always_inline)
790
int fr_value_box_memcpy_out(void *out, fr_value_box_t const *vb)
791
21.0k
{
792
21.0k
  size_t len;
793
794
21.0k
  len = fr_value_box_field_sizes[vb->type];
795
21.0k
  if (len == 0) {
796
0
    fr_strerror_printf("Type %s not supported for conversion to C type", fr_type_to_str(vb->type));
797
0
    return -1;
798
0
  }
799
800
21.0k
  memcpy(out, ((uint8_t const *)vb) + fr_value_box_offsets[vb->type], len);
801
802
21.0k
  return 0;
803
21.0k
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_util.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_der.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_memcpy_out
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_memcpy_out
Unexecuted instantiation: base32.c:fr_value_box_memcpy_out
Unexecuted instantiation: base64.c:fr_value_box_memcpy_out
Unexecuted instantiation: calc.c:fr_value_box_memcpy_out
Unexecuted instantiation: cbor.c:fr_value_box_memcpy_out
Unexecuted instantiation: decode.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_ext.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_fixup.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_print.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_test.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_tokenize.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_unknown.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_util.c:fr_value_box_memcpy_out
Unexecuted instantiation: dict_validate.c:fr_value_box_memcpy_out
Unexecuted instantiation: dl.c:fr_value_box_memcpy_out
Unexecuted instantiation: dns.c:fr_value_box_memcpy_out
Unexecuted instantiation: edit.c:fr_value_box_memcpy_out
Unexecuted instantiation: encode.c:fr_value_box_memcpy_out
Unexecuted instantiation: timer.c:fr_value_box_memcpy_out
Unexecuted instantiation: file.c:fr_value_box_memcpy_out
Unexecuted instantiation: inet.c:fr_value_box_memcpy_out
Unexecuted instantiation: log.c:fr_value_box_memcpy_out
Unexecuted instantiation: packet.c:fr_value_box_memcpy_out
Unexecuted instantiation: pair.c:fr_value_box_memcpy_out
Unexecuted instantiation: pair_inline.c:fr_value_box_memcpy_out
Unexecuted instantiation: pair_legacy.c:fr_value_box_memcpy_out
Unexecuted instantiation: pair_print.c:fr_value_box_memcpy_out
Unexecuted instantiation: pair_tokenize.c:fr_value_box_memcpy_out
Unexecuted instantiation: print.c:fr_value_box_memcpy_out
Unexecuted instantiation: proto.c:fr_value_box_memcpy_out
Unexecuted instantiation: regex.c:fr_value_box_memcpy_out
Unexecuted instantiation: socket.c:fr_value_box_memcpy_out
Unexecuted instantiation: stats.c:fr_value_box_memcpy_out
Unexecuted instantiation: struct.c:fr_value_box_memcpy_out
Unexecuted instantiation: types.c:fr_value_box_memcpy_out
Unexecuted instantiation: uri.c:fr_value_box_memcpy_out
value.c:fr_value_box_memcpy_out
Line
Count
Source
791
21.0k
{
792
21.0k
  size_t len;
793
794
21.0k
  len = fr_value_box_field_sizes[vb->type];
795
21.0k
  if (len == 0) {
796
0
    fr_strerror_printf("Type %s not supported for conversion to C type", fr_type_to_str(vb->type));
797
0
    return -1;
798
0
  }
799
800
21.0k
  memcpy(out, ((uint8_t const *)vb) + fr_value_box_offsets[vb->type], len);
801
802
21.0k
  return 0;
803
21.0k
}
Unexecuted instantiation: fuzzer.c:fr_value_box_memcpy_out
Unexecuted instantiation: base.c:fr_value_box_memcpy_out
Unexecuted instantiation: raw.c:fr_value_box_memcpy_out
Unexecuted instantiation: udp.c:fr_value_box_memcpy_out
Unexecuted instantiation: list.c:fr_value_box_memcpy_out
Unexecuted instantiation: tcp.c:fr_value_box_memcpy_out
Unexecuted instantiation: abinary.c:fr_value_box_memcpy_out
Unexecuted instantiation: vmps.c:fr_value_box_memcpy_out
804
805
/** Copy a C value value to a value box.
806
 *
807
 * This is useful when interacting with 3rd party libraries, and doing configuration parsing
808
 * as it allows us to use standard parsing and casting functions and then emit the result
809
 * as a C value.
810
 *
811
 * The field pointed to by in must be of the same type as we use to represent the value boxe's
812
 * value in its datum union, or at least the same size.
813
 *
814
 * No checks are done to ensure this is the case, so if you get this wrong it'll lead to silent
815
 * memory corruption.
816
 *
817
 * @param[in] vb  destination value box, MUST already be initialized
818
 * @param[out] in C variable to read from
819
 * @return
820
 *  - 0 on success.
821
 *  - -1 on failure.
822
 */
823
static inline CC_HINT(always_inline)
824
int fr_value_box_memcpy_in(fr_value_box_t *vb, void const *in)
825
0
{
826
0
  size_t len;
827
828
0
  len = fr_value_box_field_sizes[vb->type];
829
0
  if (len == 0) {
830
0
    fr_strerror_printf("Type %s not supported for conversion to C type", fr_type_to_str(vb->type));
831
0
    return -1;
832
0
  }
833
834
0
  memcpy(((uint8_t *)vb) + fr_value_box_offsets[vb->type], in, len);
835
836
0
  return 0;
837
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_util.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_der.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_memcpy_in
Unexecuted instantiation: base32.c:fr_value_box_memcpy_in
Unexecuted instantiation: base64.c:fr_value_box_memcpy_in
Unexecuted instantiation: calc.c:fr_value_box_memcpy_in
Unexecuted instantiation: cbor.c:fr_value_box_memcpy_in
Unexecuted instantiation: decode.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_ext.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_fixup.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_print.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_test.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_tokenize.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_unknown.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_util.c:fr_value_box_memcpy_in
Unexecuted instantiation: dict_validate.c:fr_value_box_memcpy_in
Unexecuted instantiation: dl.c:fr_value_box_memcpy_in
Unexecuted instantiation: dns.c:fr_value_box_memcpy_in
Unexecuted instantiation: edit.c:fr_value_box_memcpy_in
Unexecuted instantiation: encode.c:fr_value_box_memcpy_in
Unexecuted instantiation: timer.c:fr_value_box_memcpy_in
Unexecuted instantiation: file.c:fr_value_box_memcpy_in
Unexecuted instantiation: inet.c:fr_value_box_memcpy_in
Unexecuted instantiation: log.c:fr_value_box_memcpy_in
Unexecuted instantiation: packet.c:fr_value_box_memcpy_in
Unexecuted instantiation: pair.c:fr_value_box_memcpy_in
Unexecuted instantiation: pair_inline.c:fr_value_box_memcpy_in
Unexecuted instantiation: pair_legacy.c:fr_value_box_memcpy_in
Unexecuted instantiation: pair_print.c:fr_value_box_memcpy_in
Unexecuted instantiation: pair_tokenize.c:fr_value_box_memcpy_in
Unexecuted instantiation: print.c:fr_value_box_memcpy_in
Unexecuted instantiation: proto.c:fr_value_box_memcpy_in
Unexecuted instantiation: regex.c:fr_value_box_memcpy_in
Unexecuted instantiation: socket.c:fr_value_box_memcpy_in
Unexecuted instantiation: stats.c:fr_value_box_memcpy_in
Unexecuted instantiation: struct.c:fr_value_box_memcpy_in
Unexecuted instantiation: types.c:fr_value_box_memcpy_in
Unexecuted instantiation: uri.c:fr_value_box_memcpy_in
Unexecuted instantiation: value.c:fr_value_box_memcpy_in
Unexecuted instantiation: fuzzer.c:fr_value_box_memcpy_in
Unexecuted instantiation: base.c:fr_value_box_memcpy_in
Unexecuted instantiation: raw.c:fr_value_box_memcpy_in
Unexecuted instantiation: udp.c:fr_value_box_memcpy_in
Unexecuted instantiation: list.c:fr_value_box_memcpy_in
Unexecuted instantiation: tcp.c:fr_value_box_memcpy_in
Unexecuted instantiation: abinary.c:fr_value_box_memcpy_in
Unexecuted instantiation: vmps.c:fr_value_box_memcpy_in
838
839
840
/** Box an ethernet value (6 bytes, network byte order)
841
 *
842
 * @param[in] dst Where to copy the ethernet address to.
843
 * @param[in] enumv Enumeration values.
844
 * @param[in] src The ethernet address.
845
 * @param[in] tainted Whether data will come from an untrusted source.
846
 * @return 0 (always successful).
847
 */
848
static inline CC_HINT(nonnull(1,3), always_inline) \
849
int fr_value_box_ethernet_addr(fr_value_box_t *dst, fr_dict_attr_t const *enumv, \
850
             fr_ethernet_t const *src, bool tainted)
851
5
{
852
5
  fr_value_box_init(dst, FR_TYPE_ETHERNET, enumv, tainted);
853
5
  memcpy(dst->vb_ether, src, sizeof(dst->vb_ether));
854
5
  return 0;
855
5
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_util.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_der.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_ethernet_addr
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_ethernet_addr
Unexecuted instantiation: base32.c:fr_value_box_ethernet_addr
Unexecuted instantiation: base64.c:fr_value_box_ethernet_addr
Unexecuted instantiation: calc.c:fr_value_box_ethernet_addr
Unexecuted instantiation: cbor.c:fr_value_box_ethernet_addr
Unexecuted instantiation: decode.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_ext.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_fixup.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_print.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_test.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_tokenize.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_unknown.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_util.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dict_validate.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dl.c:fr_value_box_ethernet_addr
Unexecuted instantiation: dns.c:fr_value_box_ethernet_addr
Unexecuted instantiation: edit.c:fr_value_box_ethernet_addr
Unexecuted instantiation: encode.c:fr_value_box_ethernet_addr
Unexecuted instantiation: timer.c:fr_value_box_ethernet_addr
Unexecuted instantiation: file.c:fr_value_box_ethernet_addr
Unexecuted instantiation: inet.c:fr_value_box_ethernet_addr
Unexecuted instantiation: log.c:fr_value_box_ethernet_addr
Unexecuted instantiation: packet.c:fr_value_box_ethernet_addr
Unexecuted instantiation: pair.c:fr_value_box_ethernet_addr
Unexecuted instantiation: pair_inline.c:fr_value_box_ethernet_addr
Unexecuted instantiation: pair_legacy.c:fr_value_box_ethernet_addr
Unexecuted instantiation: pair_print.c:fr_value_box_ethernet_addr
Unexecuted instantiation: pair_tokenize.c:fr_value_box_ethernet_addr
Unexecuted instantiation: print.c:fr_value_box_ethernet_addr
Unexecuted instantiation: proto.c:fr_value_box_ethernet_addr
Unexecuted instantiation: regex.c:fr_value_box_ethernet_addr
Unexecuted instantiation: socket.c:fr_value_box_ethernet_addr
Unexecuted instantiation: stats.c:fr_value_box_ethernet_addr
Unexecuted instantiation: struct.c:fr_value_box_ethernet_addr
Unexecuted instantiation: types.c:fr_value_box_ethernet_addr
Unexecuted instantiation: uri.c:fr_value_box_ethernet_addr
value.c:fr_value_box_ethernet_addr
Line
Count
Source
851
5
{
852
5
  fr_value_box_init(dst, FR_TYPE_ETHERNET, enumv, tainted);
853
5
  memcpy(dst->vb_ether, src, sizeof(dst->vb_ether));
854
5
  return 0;
855
5
}
Unexecuted instantiation: fuzzer.c:fr_value_box_ethernet_addr
Unexecuted instantiation: base.c:fr_value_box_ethernet_addr
Unexecuted instantiation: raw.c:fr_value_box_ethernet_addr
Unexecuted instantiation: udp.c:fr_value_box_ethernet_addr
Unexecuted instantiation: list.c:fr_value_box_ethernet_addr
Unexecuted instantiation: tcp.c:fr_value_box_ethernet_addr
Unexecuted instantiation: abinary.c:fr_value_box_ethernet_addr
Unexecuted instantiation: vmps.c:fr_value_box_ethernet_addr
856
857
#define DEF_BOXING_FUNC(_ctype, _field, _type) \
858
static inline CC_HINT(nonnull(1), always_inline) \
859
int fr_value_box_##_field(fr_value_box_t *dst, fr_dict_attr_t const *enumv, \
860
0
        _ctype const value, bool tainted) { \
861
0
  fr_value_box_init(dst, _type, enumv, tainted); \
862
0
  dst->vb_##_field = value; \
863
0
  return 0; \
864
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_date
Unexecuted instantiation: fuzzer_util.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_util.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_util.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_util.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_util.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_util.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_util.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_util.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_util.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_util.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_util.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_util.c:fr_value_box_date
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_date
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_date
Unexecuted instantiation: fuzzer_der.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_der.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_der.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_der.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_der.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_der.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_der.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_der.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_der.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_der.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_der.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_der.c:fr_value_box_date
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_date
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_date
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_date
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_date
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_date
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_bool
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_int8
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_int16
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_int32
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_int64
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_float32
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_float64
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_date
Unexecuted instantiation: base32.c:fr_value_box_bool
Unexecuted instantiation: base32.c:fr_value_box_uint8
Unexecuted instantiation: base32.c:fr_value_box_uint16
Unexecuted instantiation: base32.c:fr_value_box_uint32
Unexecuted instantiation: base32.c:fr_value_box_uint64
Unexecuted instantiation: base32.c:fr_value_box_int8
Unexecuted instantiation: base32.c:fr_value_box_int16
Unexecuted instantiation: base32.c:fr_value_box_int32
Unexecuted instantiation: base32.c:fr_value_box_int64
Unexecuted instantiation: base32.c:fr_value_box_float32
Unexecuted instantiation: base32.c:fr_value_box_float64
Unexecuted instantiation: base32.c:fr_value_box_date
Unexecuted instantiation: base64.c:fr_value_box_bool
Unexecuted instantiation: base64.c:fr_value_box_uint8
Unexecuted instantiation: base64.c:fr_value_box_uint16
Unexecuted instantiation: base64.c:fr_value_box_uint32
Unexecuted instantiation: base64.c:fr_value_box_uint64
Unexecuted instantiation: base64.c:fr_value_box_int8
Unexecuted instantiation: base64.c:fr_value_box_int16
Unexecuted instantiation: base64.c:fr_value_box_int32
Unexecuted instantiation: base64.c:fr_value_box_int64
Unexecuted instantiation: base64.c:fr_value_box_float32
Unexecuted instantiation: base64.c:fr_value_box_float64
Unexecuted instantiation: base64.c:fr_value_box_date
Unexecuted instantiation: calc.c:fr_value_box_bool
Unexecuted instantiation: calc.c:fr_value_box_uint8
Unexecuted instantiation: calc.c:fr_value_box_uint16
Unexecuted instantiation: calc.c:fr_value_box_uint32
Unexecuted instantiation: calc.c:fr_value_box_uint64
Unexecuted instantiation: calc.c:fr_value_box_int8
Unexecuted instantiation: calc.c:fr_value_box_int16
Unexecuted instantiation: calc.c:fr_value_box_int32
Unexecuted instantiation: calc.c:fr_value_box_int64
Unexecuted instantiation: calc.c:fr_value_box_float32
Unexecuted instantiation: calc.c:fr_value_box_float64
Unexecuted instantiation: calc.c:fr_value_box_date
Unexecuted instantiation: cbor.c:fr_value_box_bool
Unexecuted instantiation: cbor.c:fr_value_box_uint8
Unexecuted instantiation: cbor.c:fr_value_box_uint16
Unexecuted instantiation: cbor.c:fr_value_box_uint32
Unexecuted instantiation: cbor.c:fr_value_box_uint64
Unexecuted instantiation: cbor.c:fr_value_box_int8
Unexecuted instantiation: cbor.c:fr_value_box_int16
Unexecuted instantiation: cbor.c:fr_value_box_int32
Unexecuted instantiation: cbor.c:fr_value_box_int64
Unexecuted instantiation: cbor.c:fr_value_box_float32
Unexecuted instantiation: cbor.c:fr_value_box_float64
Unexecuted instantiation: cbor.c:fr_value_box_date
Unexecuted instantiation: decode.c:fr_value_box_bool
Unexecuted instantiation: decode.c:fr_value_box_uint8
Unexecuted instantiation: decode.c:fr_value_box_uint16
Unexecuted instantiation: decode.c:fr_value_box_uint32
Unexecuted instantiation: decode.c:fr_value_box_uint64
Unexecuted instantiation: decode.c:fr_value_box_int8
Unexecuted instantiation: decode.c:fr_value_box_int16
Unexecuted instantiation: decode.c:fr_value_box_int32
Unexecuted instantiation: decode.c:fr_value_box_int64
Unexecuted instantiation: decode.c:fr_value_box_float32
Unexecuted instantiation: decode.c:fr_value_box_float64
Unexecuted instantiation: decode.c:fr_value_box_date
Unexecuted instantiation: dict_ext.c:fr_value_box_bool
Unexecuted instantiation: dict_ext.c:fr_value_box_uint8
Unexecuted instantiation: dict_ext.c:fr_value_box_uint16
Unexecuted instantiation: dict_ext.c:fr_value_box_uint32
Unexecuted instantiation: dict_ext.c:fr_value_box_uint64
Unexecuted instantiation: dict_ext.c:fr_value_box_int8
Unexecuted instantiation: dict_ext.c:fr_value_box_int16
Unexecuted instantiation: dict_ext.c:fr_value_box_int32
Unexecuted instantiation: dict_ext.c:fr_value_box_int64
Unexecuted instantiation: dict_ext.c:fr_value_box_float32
Unexecuted instantiation: dict_ext.c:fr_value_box_float64
Unexecuted instantiation: dict_ext.c:fr_value_box_date
Unexecuted instantiation: dict_fixup.c:fr_value_box_bool
Unexecuted instantiation: dict_fixup.c:fr_value_box_uint8
Unexecuted instantiation: dict_fixup.c:fr_value_box_uint16
Unexecuted instantiation: dict_fixup.c:fr_value_box_uint32
Unexecuted instantiation: dict_fixup.c:fr_value_box_uint64
Unexecuted instantiation: dict_fixup.c:fr_value_box_int8
Unexecuted instantiation: dict_fixup.c:fr_value_box_int16
Unexecuted instantiation: dict_fixup.c:fr_value_box_int32
Unexecuted instantiation: dict_fixup.c:fr_value_box_int64
Unexecuted instantiation: dict_fixup.c:fr_value_box_float32
Unexecuted instantiation: dict_fixup.c:fr_value_box_float64
Unexecuted instantiation: dict_fixup.c:fr_value_box_date
Unexecuted instantiation: dict_print.c:fr_value_box_bool
Unexecuted instantiation: dict_print.c:fr_value_box_uint8
Unexecuted instantiation: dict_print.c:fr_value_box_uint16
Unexecuted instantiation: dict_print.c:fr_value_box_uint32
Unexecuted instantiation: dict_print.c:fr_value_box_uint64
Unexecuted instantiation: dict_print.c:fr_value_box_int8
Unexecuted instantiation: dict_print.c:fr_value_box_int16
Unexecuted instantiation: dict_print.c:fr_value_box_int32
Unexecuted instantiation: dict_print.c:fr_value_box_int64
Unexecuted instantiation: dict_print.c:fr_value_box_float32
Unexecuted instantiation: dict_print.c:fr_value_box_float64
Unexecuted instantiation: dict_print.c:fr_value_box_date
Unexecuted instantiation: dict_test.c:fr_value_box_bool
Unexecuted instantiation: dict_test.c:fr_value_box_uint8
Unexecuted instantiation: dict_test.c:fr_value_box_uint16
Unexecuted instantiation: dict_test.c:fr_value_box_uint32
Unexecuted instantiation: dict_test.c:fr_value_box_uint64
Unexecuted instantiation: dict_test.c:fr_value_box_int8
Unexecuted instantiation: dict_test.c:fr_value_box_int16
Unexecuted instantiation: dict_test.c:fr_value_box_int32
Unexecuted instantiation: dict_test.c:fr_value_box_int64
Unexecuted instantiation: dict_test.c:fr_value_box_float32
Unexecuted instantiation: dict_test.c:fr_value_box_float64
Unexecuted instantiation: dict_test.c:fr_value_box_date
Unexecuted instantiation: dict_tokenize.c:fr_value_box_bool
Unexecuted instantiation: dict_tokenize.c:fr_value_box_uint8
Unexecuted instantiation: dict_tokenize.c:fr_value_box_uint16
Unexecuted instantiation: dict_tokenize.c:fr_value_box_uint32
Unexecuted instantiation: dict_tokenize.c:fr_value_box_uint64
Unexecuted instantiation: dict_tokenize.c:fr_value_box_int8
Unexecuted instantiation: dict_tokenize.c:fr_value_box_int16
Unexecuted instantiation: dict_tokenize.c:fr_value_box_int32
Unexecuted instantiation: dict_tokenize.c:fr_value_box_int64
Unexecuted instantiation: dict_tokenize.c:fr_value_box_float32
Unexecuted instantiation: dict_tokenize.c:fr_value_box_float64
Unexecuted instantiation: dict_tokenize.c:fr_value_box_date
Unexecuted instantiation: dict_unknown.c:fr_value_box_bool
Unexecuted instantiation: dict_unknown.c:fr_value_box_uint8
Unexecuted instantiation: dict_unknown.c:fr_value_box_uint16
Unexecuted instantiation: dict_unknown.c:fr_value_box_uint32
Unexecuted instantiation: dict_unknown.c:fr_value_box_uint64
Unexecuted instantiation: dict_unknown.c:fr_value_box_int8
Unexecuted instantiation: dict_unknown.c:fr_value_box_int16
Unexecuted instantiation: dict_unknown.c:fr_value_box_int32
Unexecuted instantiation: dict_unknown.c:fr_value_box_int64
Unexecuted instantiation: dict_unknown.c:fr_value_box_float32
Unexecuted instantiation: dict_unknown.c:fr_value_box_float64
Unexecuted instantiation: dict_unknown.c:fr_value_box_date
Unexecuted instantiation: dict_util.c:fr_value_box_bool
Unexecuted instantiation: dict_util.c:fr_value_box_uint8
Unexecuted instantiation: dict_util.c:fr_value_box_uint16
Unexecuted instantiation: dict_util.c:fr_value_box_uint32
Unexecuted instantiation: dict_util.c:fr_value_box_uint64
Unexecuted instantiation: dict_util.c:fr_value_box_int8
Unexecuted instantiation: dict_util.c:fr_value_box_int16
Unexecuted instantiation: dict_util.c:fr_value_box_int32
Unexecuted instantiation: dict_util.c:fr_value_box_int64
Unexecuted instantiation: dict_util.c:fr_value_box_float32
Unexecuted instantiation: dict_util.c:fr_value_box_float64
Unexecuted instantiation: dict_util.c:fr_value_box_date
Unexecuted instantiation: dict_validate.c:fr_value_box_bool
Unexecuted instantiation: dict_validate.c:fr_value_box_uint8
Unexecuted instantiation: dict_validate.c:fr_value_box_uint16
Unexecuted instantiation: dict_validate.c:fr_value_box_uint32
Unexecuted instantiation: dict_validate.c:fr_value_box_uint64
Unexecuted instantiation: dict_validate.c:fr_value_box_int8
Unexecuted instantiation: dict_validate.c:fr_value_box_int16
Unexecuted instantiation: dict_validate.c:fr_value_box_int32
Unexecuted instantiation: dict_validate.c:fr_value_box_int64
Unexecuted instantiation: dict_validate.c:fr_value_box_float32
Unexecuted instantiation: dict_validate.c:fr_value_box_float64
Unexecuted instantiation: dict_validate.c:fr_value_box_date
Unexecuted instantiation: dl.c:fr_value_box_bool
Unexecuted instantiation: dl.c:fr_value_box_uint8
Unexecuted instantiation: dl.c:fr_value_box_uint16
Unexecuted instantiation: dl.c:fr_value_box_uint32
Unexecuted instantiation: dl.c:fr_value_box_uint64
Unexecuted instantiation: dl.c:fr_value_box_int8
Unexecuted instantiation: dl.c:fr_value_box_int16
Unexecuted instantiation: dl.c:fr_value_box_int32
Unexecuted instantiation: dl.c:fr_value_box_int64
Unexecuted instantiation: dl.c:fr_value_box_float32
Unexecuted instantiation: dl.c:fr_value_box_float64
Unexecuted instantiation: dl.c:fr_value_box_date
Unexecuted instantiation: dns.c:fr_value_box_bool
Unexecuted instantiation: dns.c:fr_value_box_uint8
Unexecuted instantiation: dns.c:fr_value_box_uint16
Unexecuted instantiation: dns.c:fr_value_box_uint32
Unexecuted instantiation: dns.c:fr_value_box_uint64
Unexecuted instantiation: dns.c:fr_value_box_int8
Unexecuted instantiation: dns.c:fr_value_box_int16
Unexecuted instantiation: dns.c:fr_value_box_int32
Unexecuted instantiation: dns.c:fr_value_box_int64
Unexecuted instantiation: dns.c:fr_value_box_float32
Unexecuted instantiation: dns.c:fr_value_box_float64
Unexecuted instantiation: dns.c:fr_value_box_date
Unexecuted instantiation: edit.c:fr_value_box_bool
Unexecuted instantiation: edit.c:fr_value_box_uint8
Unexecuted instantiation: edit.c:fr_value_box_uint16
Unexecuted instantiation: edit.c:fr_value_box_uint32
Unexecuted instantiation: edit.c:fr_value_box_uint64
Unexecuted instantiation: edit.c:fr_value_box_int8
Unexecuted instantiation: edit.c:fr_value_box_int16
Unexecuted instantiation: edit.c:fr_value_box_int32
Unexecuted instantiation: edit.c:fr_value_box_int64
Unexecuted instantiation: edit.c:fr_value_box_float32
Unexecuted instantiation: edit.c:fr_value_box_float64
Unexecuted instantiation: edit.c:fr_value_box_date
Unexecuted instantiation: encode.c:fr_value_box_bool
Unexecuted instantiation: encode.c:fr_value_box_uint8
Unexecuted instantiation: encode.c:fr_value_box_uint16
Unexecuted instantiation: encode.c:fr_value_box_uint32
Unexecuted instantiation: encode.c:fr_value_box_uint64
Unexecuted instantiation: encode.c:fr_value_box_int8
Unexecuted instantiation: encode.c:fr_value_box_int16
Unexecuted instantiation: encode.c:fr_value_box_int32
Unexecuted instantiation: encode.c:fr_value_box_int64
Unexecuted instantiation: encode.c:fr_value_box_float32
Unexecuted instantiation: encode.c:fr_value_box_float64
Unexecuted instantiation: encode.c:fr_value_box_date
Unexecuted instantiation: timer.c:fr_value_box_bool
Unexecuted instantiation: timer.c:fr_value_box_uint8
Unexecuted instantiation: timer.c:fr_value_box_uint16
Unexecuted instantiation: timer.c:fr_value_box_uint32
Unexecuted instantiation: timer.c:fr_value_box_uint64
Unexecuted instantiation: timer.c:fr_value_box_int8
Unexecuted instantiation: timer.c:fr_value_box_int16
Unexecuted instantiation: timer.c:fr_value_box_int32
Unexecuted instantiation: timer.c:fr_value_box_int64
Unexecuted instantiation: timer.c:fr_value_box_float32
Unexecuted instantiation: timer.c:fr_value_box_float64
Unexecuted instantiation: timer.c:fr_value_box_date
Unexecuted instantiation: file.c:fr_value_box_bool
Unexecuted instantiation: file.c:fr_value_box_uint8
Unexecuted instantiation: file.c:fr_value_box_uint16
Unexecuted instantiation: file.c:fr_value_box_uint32
Unexecuted instantiation: file.c:fr_value_box_uint64
Unexecuted instantiation: file.c:fr_value_box_int8
Unexecuted instantiation: file.c:fr_value_box_int16
Unexecuted instantiation: file.c:fr_value_box_int32
Unexecuted instantiation: file.c:fr_value_box_int64
Unexecuted instantiation: file.c:fr_value_box_float32
Unexecuted instantiation: file.c:fr_value_box_float64
Unexecuted instantiation: file.c:fr_value_box_date
Unexecuted instantiation: inet.c:fr_value_box_bool
Unexecuted instantiation: inet.c:fr_value_box_uint8
Unexecuted instantiation: inet.c:fr_value_box_uint16
Unexecuted instantiation: inet.c:fr_value_box_uint32
Unexecuted instantiation: inet.c:fr_value_box_uint64
Unexecuted instantiation: inet.c:fr_value_box_int8
Unexecuted instantiation: inet.c:fr_value_box_int16
Unexecuted instantiation: inet.c:fr_value_box_int32
Unexecuted instantiation: inet.c:fr_value_box_int64
Unexecuted instantiation: inet.c:fr_value_box_float32
Unexecuted instantiation: inet.c:fr_value_box_float64
Unexecuted instantiation: inet.c:fr_value_box_date
Unexecuted instantiation: log.c:fr_value_box_bool
Unexecuted instantiation: log.c:fr_value_box_uint8
Unexecuted instantiation: log.c:fr_value_box_uint16
Unexecuted instantiation: log.c:fr_value_box_uint32
Unexecuted instantiation: log.c:fr_value_box_uint64
Unexecuted instantiation: log.c:fr_value_box_int8
Unexecuted instantiation: log.c:fr_value_box_int16
Unexecuted instantiation: log.c:fr_value_box_int32
Unexecuted instantiation: log.c:fr_value_box_int64
Unexecuted instantiation: log.c:fr_value_box_float32
Unexecuted instantiation: log.c:fr_value_box_float64
Unexecuted instantiation: log.c:fr_value_box_date
Unexecuted instantiation: packet.c:fr_value_box_bool
Unexecuted instantiation: packet.c:fr_value_box_uint8
Unexecuted instantiation: packet.c:fr_value_box_uint16
Unexecuted instantiation: packet.c:fr_value_box_uint32
Unexecuted instantiation: packet.c:fr_value_box_uint64
Unexecuted instantiation: packet.c:fr_value_box_int8
Unexecuted instantiation: packet.c:fr_value_box_int16
Unexecuted instantiation: packet.c:fr_value_box_int32
Unexecuted instantiation: packet.c:fr_value_box_int64
Unexecuted instantiation: packet.c:fr_value_box_float32
Unexecuted instantiation: packet.c:fr_value_box_float64
Unexecuted instantiation: packet.c:fr_value_box_date
Unexecuted instantiation: pair.c:fr_value_box_bool
Unexecuted instantiation: pair.c:fr_value_box_uint8
Unexecuted instantiation: pair.c:fr_value_box_uint16
Unexecuted instantiation: pair.c:fr_value_box_uint32
Unexecuted instantiation: pair.c:fr_value_box_uint64
Unexecuted instantiation: pair.c:fr_value_box_int8
Unexecuted instantiation: pair.c:fr_value_box_int16
Unexecuted instantiation: pair.c:fr_value_box_int32
Unexecuted instantiation: pair.c:fr_value_box_int64
Unexecuted instantiation: pair.c:fr_value_box_float32
Unexecuted instantiation: pair.c:fr_value_box_float64
Unexecuted instantiation: pair.c:fr_value_box_date
Unexecuted instantiation: pair_inline.c:fr_value_box_bool
Unexecuted instantiation: pair_inline.c:fr_value_box_uint8
Unexecuted instantiation: pair_inline.c:fr_value_box_uint16
Unexecuted instantiation: pair_inline.c:fr_value_box_uint32
Unexecuted instantiation: pair_inline.c:fr_value_box_uint64
Unexecuted instantiation: pair_inline.c:fr_value_box_int8
Unexecuted instantiation: pair_inline.c:fr_value_box_int16
Unexecuted instantiation: pair_inline.c:fr_value_box_int32
Unexecuted instantiation: pair_inline.c:fr_value_box_int64
Unexecuted instantiation: pair_inline.c:fr_value_box_float32
Unexecuted instantiation: pair_inline.c:fr_value_box_float64
Unexecuted instantiation: pair_inline.c:fr_value_box_date
Unexecuted instantiation: pair_legacy.c:fr_value_box_bool
Unexecuted instantiation: pair_legacy.c:fr_value_box_uint8
Unexecuted instantiation: pair_legacy.c:fr_value_box_uint16
Unexecuted instantiation: pair_legacy.c:fr_value_box_uint32
Unexecuted instantiation: pair_legacy.c:fr_value_box_uint64
Unexecuted instantiation: pair_legacy.c:fr_value_box_int8
Unexecuted instantiation: pair_legacy.c:fr_value_box_int16
Unexecuted instantiation: pair_legacy.c:fr_value_box_int32
Unexecuted instantiation: pair_legacy.c:fr_value_box_int64
Unexecuted instantiation: pair_legacy.c:fr_value_box_float32
Unexecuted instantiation: pair_legacy.c:fr_value_box_float64
Unexecuted instantiation: pair_legacy.c:fr_value_box_date
Unexecuted instantiation: pair_print.c:fr_value_box_bool
Unexecuted instantiation: pair_print.c:fr_value_box_uint8
Unexecuted instantiation: pair_print.c:fr_value_box_uint16
Unexecuted instantiation: pair_print.c:fr_value_box_uint32
Unexecuted instantiation: pair_print.c:fr_value_box_uint64
Unexecuted instantiation: pair_print.c:fr_value_box_int8
Unexecuted instantiation: pair_print.c:fr_value_box_int16
Unexecuted instantiation: pair_print.c:fr_value_box_int32
Unexecuted instantiation: pair_print.c:fr_value_box_int64
Unexecuted instantiation: pair_print.c:fr_value_box_float32
Unexecuted instantiation: pair_print.c:fr_value_box_float64
Unexecuted instantiation: pair_print.c:fr_value_box_date
Unexecuted instantiation: pair_tokenize.c:fr_value_box_bool
Unexecuted instantiation: pair_tokenize.c:fr_value_box_uint8
Unexecuted instantiation: pair_tokenize.c:fr_value_box_uint16
Unexecuted instantiation: pair_tokenize.c:fr_value_box_uint32
Unexecuted instantiation: pair_tokenize.c:fr_value_box_uint64
Unexecuted instantiation: pair_tokenize.c:fr_value_box_int8
Unexecuted instantiation: pair_tokenize.c:fr_value_box_int16
Unexecuted instantiation: pair_tokenize.c:fr_value_box_int32
Unexecuted instantiation: pair_tokenize.c:fr_value_box_int64
Unexecuted instantiation: pair_tokenize.c:fr_value_box_float32
Unexecuted instantiation: pair_tokenize.c:fr_value_box_float64
Unexecuted instantiation: pair_tokenize.c:fr_value_box_date
Unexecuted instantiation: print.c:fr_value_box_bool
Unexecuted instantiation: print.c:fr_value_box_uint8
Unexecuted instantiation: print.c:fr_value_box_uint16
Unexecuted instantiation: print.c:fr_value_box_uint32
Unexecuted instantiation: print.c:fr_value_box_uint64
Unexecuted instantiation: print.c:fr_value_box_int8
Unexecuted instantiation: print.c:fr_value_box_int16
Unexecuted instantiation: print.c:fr_value_box_int32
Unexecuted instantiation: print.c:fr_value_box_int64
Unexecuted instantiation: print.c:fr_value_box_float32
Unexecuted instantiation: print.c:fr_value_box_float64
Unexecuted instantiation: print.c:fr_value_box_date
Unexecuted instantiation: proto.c:fr_value_box_bool
Unexecuted instantiation: proto.c:fr_value_box_uint8
Unexecuted instantiation: proto.c:fr_value_box_uint16
Unexecuted instantiation: proto.c:fr_value_box_uint32
Unexecuted instantiation: proto.c:fr_value_box_uint64
Unexecuted instantiation: proto.c:fr_value_box_int8
Unexecuted instantiation: proto.c:fr_value_box_int16
Unexecuted instantiation: proto.c:fr_value_box_int32
Unexecuted instantiation: proto.c:fr_value_box_int64
Unexecuted instantiation: proto.c:fr_value_box_float32
Unexecuted instantiation: proto.c:fr_value_box_float64
Unexecuted instantiation: proto.c:fr_value_box_date
Unexecuted instantiation: regex.c:fr_value_box_bool
Unexecuted instantiation: regex.c:fr_value_box_uint8
Unexecuted instantiation: regex.c:fr_value_box_uint16
Unexecuted instantiation: regex.c:fr_value_box_uint32
Unexecuted instantiation: regex.c:fr_value_box_uint64
Unexecuted instantiation: regex.c:fr_value_box_int8
Unexecuted instantiation: regex.c:fr_value_box_int16
Unexecuted instantiation: regex.c:fr_value_box_int32
Unexecuted instantiation: regex.c:fr_value_box_int64
Unexecuted instantiation: regex.c:fr_value_box_float32
Unexecuted instantiation: regex.c:fr_value_box_float64
Unexecuted instantiation: regex.c:fr_value_box_date
Unexecuted instantiation: socket.c:fr_value_box_bool
Unexecuted instantiation: socket.c:fr_value_box_uint8
Unexecuted instantiation: socket.c:fr_value_box_uint16
Unexecuted instantiation: socket.c:fr_value_box_uint32
Unexecuted instantiation: socket.c:fr_value_box_uint64
Unexecuted instantiation: socket.c:fr_value_box_int8
Unexecuted instantiation: socket.c:fr_value_box_int16
Unexecuted instantiation: socket.c:fr_value_box_int32
Unexecuted instantiation: socket.c:fr_value_box_int64
Unexecuted instantiation: socket.c:fr_value_box_float32
Unexecuted instantiation: socket.c:fr_value_box_float64
Unexecuted instantiation: socket.c:fr_value_box_date
Unexecuted instantiation: stats.c:fr_value_box_bool
Unexecuted instantiation: stats.c:fr_value_box_uint8
Unexecuted instantiation: stats.c:fr_value_box_uint16
Unexecuted instantiation: stats.c:fr_value_box_uint32
Unexecuted instantiation: stats.c:fr_value_box_uint64
Unexecuted instantiation: stats.c:fr_value_box_int8
Unexecuted instantiation: stats.c:fr_value_box_int16
Unexecuted instantiation: stats.c:fr_value_box_int32
Unexecuted instantiation: stats.c:fr_value_box_int64
Unexecuted instantiation: stats.c:fr_value_box_float32
Unexecuted instantiation: stats.c:fr_value_box_float64
Unexecuted instantiation: stats.c:fr_value_box_date
Unexecuted instantiation: struct.c:fr_value_box_bool
Unexecuted instantiation: struct.c:fr_value_box_uint8
Unexecuted instantiation: struct.c:fr_value_box_uint16
Unexecuted instantiation: struct.c:fr_value_box_uint32
Unexecuted instantiation: struct.c:fr_value_box_uint64
Unexecuted instantiation: struct.c:fr_value_box_int8
Unexecuted instantiation: struct.c:fr_value_box_int16
Unexecuted instantiation: struct.c:fr_value_box_int32
Unexecuted instantiation: struct.c:fr_value_box_int64
Unexecuted instantiation: struct.c:fr_value_box_float32
Unexecuted instantiation: struct.c:fr_value_box_float64
Unexecuted instantiation: struct.c:fr_value_box_date
Unexecuted instantiation: types.c:fr_value_box_bool
Unexecuted instantiation: types.c:fr_value_box_uint8
Unexecuted instantiation: types.c:fr_value_box_uint16
Unexecuted instantiation: types.c:fr_value_box_uint32
Unexecuted instantiation: types.c:fr_value_box_uint64
Unexecuted instantiation: types.c:fr_value_box_int8
Unexecuted instantiation: types.c:fr_value_box_int16
Unexecuted instantiation: types.c:fr_value_box_int32
Unexecuted instantiation: types.c:fr_value_box_int64
Unexecuted instantiation: types.c:fr_value_box_float32
Unexecuted instantiation: types.c:fr_value_box_float64
Unexecuted instantiation: types.c:fr_value_box_date
Unexecuted instantiation: uri.c:fr_value_box_bool
Unexecuted instantiation: uri.c:fr_value_box_uint8
Unexecuted instantiation: uri.c:fr_value_box_uint16
Unexecuted instantiation: uri.c:fr_value_box_uint32
Unexecuted instantiation: uri.c:fr_value_box_uint64
Unexecuted instantiation: uri.c:fr_value_box_int8
Unexecuted instantiation: uri.c:fr_value_box_int16
Unexecuted instantiation: uri.c:fr_value_box_int32
Unexecuted instantiation: uri.c:fr_value_box_int64
Unexecuted instantiation: uri.c:fr_value_box_float32
Unexecuted instantiation: uri.c:fr_value_box_float64
Unexecuted instantiation: uri.c:fr_value_box_date
Unexecuted instantiation: value.c:fr_value_box_bool
Unexecuted instantiation: value.c:fr_value_box_uint8
Unexecuted instantiation: value.c:fr_value_box_uint16
Unexecuted instantiation: value.c:fr_value_box_uint32
Unexecuted instantiation: value.c:fr_value_box_uint64
Unexecuted instantiation: value.c:fr_value_box_int8
Unexecuted instantiation: value.c:fr_value_box_int16
Unexecuted instantiation: value.c:fr_value_box_int32
Unexecuted instantiation: value.c:fr_value_box_int64
Unexecuted instantiation: value.c:fr_value_box_float32
Unexecuted instantiation: value.c:fr_value_box_float64
Unexecuted instantiation: value.c:fr_value_box_date
Unexecuted instantiation: fuzzer.c:fr_value_box_bool
Unexecuted instantiation: fuzzer.c:fr_value_box_uint8
Unexecuted instantiation: fuzzer.c:fr_value_box_uint16
Unexecuted instantiation: fuzzer.c:fr_value_box_uint32
Unexecuted instantiation: fuzzer.c:fr_value_box_uint64
Unexecuted instantiation: fuzzer.c:fr_value_box_int8
Unexecuted instantiation: fuzzer.c:fr_value_box_int16
Unexecuted instantiation: fuzzer.c:fr_value_box_int32
Unexecuted instantiation: fuzzer.c:fr_value_box_int64
Unexecuted instantiation: fuzzer.c:fr_value_box_float32
Unexecuted instantiation: fuzzer.c:fr_value_box_float64
Unexecuted instantiation: fuzzer.c:fr_value_box_date
Unexecuted instantiation: base.c:fr_value_box_bool
Unexecuted instantiation: base.c:fr_value_box_uint8
Unexecuted instantiation: base.c:fr_value_box_uint16
Unexecuted instantiation: base.c:fr_value_box_uint32
Unexecuted instantiation: base.c:fr_value_box_uint64
Unexecuted instantiation: base.c:fr_value_box_int8
Unexecuted instantiation: base.c:fr_value_box_int16
Unexecuted instantiation: base.c:fr_value_box_int32
Unexecuted instantiation: base.c:fr_value_box_int64
Unexecuted instantiation: base.c:fr_value_box_float32
Unexecuted instantiation: base.c:fr_value_box_float64
Unexecuted instantiation: base.c:fr_value_box_date
Unexecuted instantiation: raw.c:fr_value_box_bool
Unexecuted instantiation: raw.c:fr_value_box_uint8
Unexecuted instantiation: raw.c:fr_value_box_uint16
Unexecuted instantiation: raw.c:fr_value_box_uint32
Unexecuted instantiation: raw.c:fr_value_box_uint64
Unexecuted instantiation: raw.c:fr_value_box_int8
Unexecuted instantiation: raw.c:fr_value_box_int16
Unexecuted instantiation: raw.c:fr_value_box_int32
Unexecuted instantiation: raw.c:fr_value_box_int64
Unexecuted instantiation: raw.c:fr_value_box_float32
Unexecuted instantiation: raw.c:fr_value_box_float64
Unexecuted instantiation: raw.c:fr_value_box_date
Unexecuted instantiation: udp.c:fr_value_box_bool
Unexecuted instantiation: udp.c:fr_value_box_uint8
Unexecuted instantiation: udp.c:fr_value_box_uint16
Unexecuted instantiation: udp.c:fr_value_box_uint32
Unexecuted instantiation: udp.c:fr_value_box_uint64
Unexecuted instantiation: udp.c:fr_value_box_int8
Unexecuted instantiation: udp.c:fr_value_box_int16
Unexecuted instantiation: udp.c:fr_value_box_int32
Unexecuted instantiation: udp.c:fr_value_box_int64
Unexecuted instantiation: udp.c:fr_value_box_float32
Unexecuted instantiation: udp.c:fr_value_box_float64
Unexecuted instantiation: udp.c:fr_value_box_date
Unexecuted instantiation: list.c:fr_value_box_bool
Unexecuted instantiation: list.c:fr_value_box_uint8
Unexecuted instantiation: list.c:fr_value_box_uint16
Unexecuted instantiation: list.c:fr_value_box_uint32
Unexecuted instantiation: list.c:fr_value_box_uint64
Unexecuted instantiation: list.c:fr_value_box_int8
Unexecuted instantiation: list.c:fr_value_box_int16
Unexecuted instantiation: list.c:fr_value_box_int32
Unexecuted instantiation: list.c:fr_value_box_int64
Unexecuted instantiation: list.c:fr_value_box_float32
Unexecuted instantiation: list.c:fr_value_box_float64
Unexecuted instantiation: list.c:fr_value_box_date
Unexecuted instantiation: tcp.c:fr_value_box_bool
Unexecuted instantiation: tcp.c:fr_value_box_uint8
Unexecuted instantiation: tcp.c:fr_value_box_uint16
Unexecuted instantiation: tcp.c:fr_value_box_uint32
Unexecuted instantiation: tcp.c:fr_value_box_uint64
Unexecuted instantiation: tcp.c:fr_value_box_int8
Unexecuted instantiation: tcp.c:fr_value_box_int16
Unexecuted instantiation: tcp.c:fr_value_box_int32
Unexecuted instantiation: tcp.c:fr_value_box_int64
Unexecuted instantiation: tcp.c:fr_value_box_float32
Unexecuted instantiation: tcp.c:fr_value_box_float64
Unexecuted instantiation: tcp.c:fr_value_box_date
Unexecuted instantiation: abinary.c:fr_value_box_bool
Unexecuted instantiation: abinary.c:fr_value_box_uint8
Unexecuted instantiation: abinary.c:fr_value_box_uint16
Unexecuted instantiation: abinary.c:fr_value_box_uint32
Unexecuted instantiation: abinary.c:fr_value_box_uint64
Unexecuted instantiation: abinary.c:fr_value_box_int8
Unexecuted instantiation: abinary.c:fr_value_box_int16
Unexecuted instantiation: abinary.c:fr_value_box_int32
Unexecuted instantiation: abinary.c:fr_value_box_int64
Unexecuted instantiation: abinary.c:fr_value_box_float32
Unexecuted instantiation: abinary.c:fr_value_box_float64
Unexecuted instantiation: abinary.c:fr_value_box_date
Unexecuted instantiation: vmps.c:fr_value_box_bool
Unexecuted instantiation: vmps.c:fr_value_box_uint8
Unexecuted instantiation: vmps.c:fr_value_box_uint16
Unexecuted instantiation: vmps.c:fr_value_box_uint32
Unexecuted instantiation: vmps.c:fr_value_box_uint64
Unexecuted instantiation: vmps.c:fr_value_box_int8
Unexecuted instantiation: vmps.c:fr_value_box_int16
Unexecuted instantiation: vmps.c:fr_value_box_int32
Unexecuted instantiation: vmps.c:fr_value_box_int64
Unexecuted instantiation: vmps.c:fr_value_box_float32
Unexecuted instantiation: vmps.c:fr_value_box_float64
Unexecuted instantiation: vmps.c:fr_value_box_date
865
866
DEF_BOXING_FUNC(bool, bool, FR_TYPE_BOOL)
867
868
DEF_BOXING_FUNC(uint8_t, uint8, FR_TYPE_UINT8)
869
DEF_BOXING_FUNC(uint16_t, uint16, FR_TYPE_UINT16)
870
DEF_BOXING_FUNC(uint32_t, uint32, FR_TYPE_UINT32)
871
DEF_BOXING_FUNC(uint64_t, uint64, FR_TYPE_UINT64)
872
873
DEF_BOXING_FUNC(int8_t, int8, FR_TYPE_INT8)
874
DEF_BOXING_FUNC(int16_t, int16, FR_TYPE_INT16)
875
DEF_BOXING_FUNC(int32_t, int32, FR_TYPE_INT32)
876
DEF_BOXING_FUNC(int64_t, int64, FR_TYPE_INT64)
877
878
DEF_BOXING_FUNC(float, float32, FR_TYPE_FLOAT32)
879
DEF_BOXING_FUNC(double, float64, FR_TYPE_FLOAT64)
880
881
DEF_BOXING_FUNC(fr_unix_time_t, date, FR_TYPE_DATE)
882
883
/** Automagically fill in a box, determining the value type from the type of the C variable
884
 *
885
 * Simplify boxing for simple C types using the _Generic macro to emit code that
886
 * fills in the value box based on the type of _var provided.
887
 *
888
 * @note Will not set the box value to tainted.  You should do this manually if required.
889
 *
890
 * @note Will not work for all box types.  Will default to the 'simpler' box type, if the mapping
891
 *   between C type and box type is ambiguous.
892
 *
893
 * @param[in] _box  to assign value to.
894
 * @param[in] _var  C variable to assign value from.
895
 * @param[in] _tainted  Whether the value came from an untrusted source.
896
 */
897
#define fr_value_box(_box, _var, _tainted) \
898
_Generic((_var), \
899
  fr_ipaddr_t *   : fr_value_box_ipaddr, \
900
  fr_ipaddr_t const * : fr_value_box_ipaddr, \
901
  fr_ethernet_t *   : fr_value_box_ethernet_addr, \
902
  fr_ethernet_t const * : fr_value_box_ethernet_addr, \
903
  bool      : fr_value_box_bool, \
904
  uint8_t     : fr_value_box_uint8, \
905
  uint16_t    : fr_value_box_uint16, \
906
  uint32_t    : fr_value_box_uint32, \
907
  uint64_t    : fr_value_box_uint64, \
908
  int8_t      : fr_value_box_int8, \
909
  int16_t     : fr_value_box_int16, \
910
  int32_t     : fr_value_box_int32, \
911
  int64_t     : fr_value_box_int64, \
912
  float     : fr_value_box_float32, \
913
  double      : fr_value_box_float64 \
914
)(_box, NULL, _var, _tainted)
915
916
/** Automagically fill in a box, for types with length
917
 *
918
 * @param[in] _ctx  to allocate value in.
919
 * @param[in] _box  to assign value to.
920
 * @param[in] _var  C variable to assign value from.
921
 * @param[in] _len  of C variable.
922
 * @param[in] _tainted  Whether the value came from an untrusted source.
923
 */
924
0
#define fr_value_box_len(_ctx, _box, _var, _len, _tainted) \
925
0
_Generic((_var), \
926
0
  char *      : fr_value_box_bstrndup, \
927
0
  char const *    : fr_value_box_bstrndup, \
928
0
  uint8_t *   : fr_value_box_memdup, \
929
0
  uint8_t const *   : fr_value_box_memdup \
930
0
)(_ctx, _box, NULL, _var, _len, _tainted)
931
932
/** Unbox an ethernet value (6 bytes, network byte order)
933
 *
934
 * @param[in] dst Where to copy the ethernet address to.
935
 * @param[in] src Where to copy the ethernet address from.
936
 * @return
937
 *  - 0 on success.
938
 *  - -1 on type mismatch.
939
 */
940
static inline CC_HINT(nonnull)
941
int fr_value_unbox_ethernet_addr(fr_ethernet_t *dst, fr_value_box_t *src)
942
0
{
943
0
  if (unlikely(src->type != FR_TYPE_ETHERNET)) { \
944
0
    fr_strerror_printf("Unboxing failed.  Needed type %s, had type %s",
945
0
           fr_type_to_str(FR_TYPE_ETHERNET),
946
0
           fr_type_to_str(src->type));
947
0
    return -1; \
948
0
  }
949
0
  memcpy(dst, src->vb_ether, sizeof(src->vb_ether));  /* Must be src, dst is a pointer */
950
0
  return 0;
951
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: base32.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: base64.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: calc.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: cbor.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: decode.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_ext.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_print.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_test.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_util.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dict_validate.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dl.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: dns.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: edit.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: encode.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: timer.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: file.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: inet.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: log.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: packet.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: pair.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: pair_inline.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: pair_print.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: print.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: proto.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: regex.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: socket.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: stats.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: struct.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: types.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: uri.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: value.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: fuzzer.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: base.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: raw.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: udp.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: list.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: tcp.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: abinary.c:fr_value_unbox_ethernet_addr
Unexecuted instantiation: vmps.c:fr_value_unbox_ethernet_addr
952
953
#define DEF_UNBOXING_FUNC(_ctype, _field, _type) \
954
static inline CC_HINT(nonnull)  \
955
0
int fr_value_unbox_##_field(_ctype *var, fr_value_box_t const *src) { \
956
0
  if (unlikely(src->type != _type)) { \
957
0
    fr_strerror_printf("Unboxing failed.  Needed type %s, had type %s", \
958
0
           fr_type_to_str(_type), \
959
0
           fr_type_to_str(src->type)); \
960
0
    return -1; \
961
0
  } \
962
0
  *var = src->vb_##_field; \
963
0
  return 0; \
964
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_util.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_cbor.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_der.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_dns.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_bfd.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_radius.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_tftp.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer_vmps.c:fr_value_unbox_date
Unexecuted instantiation: base32.c:fr_value_unbox_uint8
Unexecuted instantiation: base32.c:fr_value_unbox_uint16
Unexecuted instantiation: base32.c:fr_value_unbox_uint32
Unexecuted instantiation: base32.c:fr_value_unbox_uint64
Unexecuted instantiation: base32.c:fr_value_unbox_int8
Unexecuted instantiation: base32.c:fr_value_unbox_int16
Unexecuted instantiation: base32.c:fr_value_unbox_int32
Unexecuted instantiation: base32.c:fr_value_unbox_int64
Unexecuted instantiation: base32.c:fr_value_unbox_float32
Unexecuted instantiation: base32.c:fr_value_unbox_float64
Unexecuted instantiation: base32.c:fr_value_unbox_date
Unexecuted instantiation: base64.c:fr_value_unbox_uint8
Unexecuted instantiation: base64.c:fr_value_unbox_uint16
Unexecuted instantiation: base64.c:fr_value_unbox_uint32
Unexecuted instantiation: base64.c:fr_value_unbox_uint64
Unexecuted instantiation: base64.c:fr_value_unbox_int8
Unexecuted instantiation: base64.c:fr_value_unbox_int16
Unexecuted instantiation: base64.c:fr_value_unbox_int32
Unexecuted instantiation: base64.c:fr_value_unbox_int64
Unexecuted instantiation: base64.c:fr_value_unbox_float32
Unexecuted instantiation: base64.c:fr_value_unbox_float64
Unexecuted instantiation: base64.c:fr_value_unbox_date
Unexecuted instantiation: calc.c:fr_value_unbox_uint8
Unexecuted instantiation: calc.c:fr_value_unbox_uint16
Unexecuted instantiation: calc.c:fr_value_unbox_uint32
Unexecuted instantiation: calc.c:fr_value_unbox_uint64
Unexecuted instantiation: calc.c:fr_value_unbox_int8
Unexecuted instantiation: calc.c:fr_value_unbox_int16
Unexecuted instantiation: calc.c:fr_value_unbox_int32
Unexecuted instantiation: calc.c:fr_value_unbox_int64
Unexecuted instantiation: calc.c:fr_value_unbox_float32
Unexecuted instantiation: calc.c:fr_value_unbox_float64
Unexecuted instantiation: calc.c:fr_value_unbox_date
Unexecuted instantiation: cbor.c:fr_value_unbox_uint8
Unexecuted instantiation: cbor.c:fr_value_unbox_uint16
Unexecuted instantiation: cbor.c:fr_value_unbox_uint32
Unexecuted instantiation: cbor.c:fr_value_unbox_uint64
Unexecuted instantiation: cbor.c:fr_value_unbox_int8
Unexecuted instantiation: cbor.c:fr_value_unbox_int16
Unexecuted instantiation: cbor.c:fr_value_unbox_int32
Unexecuted instantiation: cbor.c:fr_value_unbox_int64
Unexecuted instantiation: cbor.c:fr_value_unbox_float32
Unexecuted instantiation: cbor.c:fr_value_unbox_float64
Unexecuted instantiation: cbor.c:fr_value_unbox_date
Unexecuted instantiation: decode.c:fr_value_unbox_uint8
Unexecuted instantiation: decode.c:fr_value_unbox_uint16
Unexecuted instantiation: decode.c:fr_value_unbox_uint32
Unexecuted instantiation: decode.c:fr_value_unbox_uint64
Unexecuted instantiation: decode.c:fr_value_unbox_int8
Unexecuted instantiation: decode.c:fr_value_unbox_int16
Unexecuted instantiation: decode.c:fr_value_unbox_int32
Unexecuted instantiation: decode.c:fr_value_unbox_int64
Unexecuted instantiation: decode.c:fr_value_unbox_float32
Unexecuted instantiation: decode.c:fr_value_unbox_float64
Unexecuted instantiation: decode.c:fr_value_unbox_date
Unexecuted instantiation: dict_ext.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_ext.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_ext.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_ext.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_ext.c:fr_value_unbox_int8
Unexecuted instantiation: dict_ext.c:fr_value_unbox_int16
Unexecuted instantiation: dict_ext.c:fr_value_unbox_int32
Unexecuted instantiation: dict_ext.c:fr_value_unbox_int64
Unexecuted instantiation: dict_ext.c:fr_value_unbox_float32
Unexecuted instantiation: dict_ext.c:fr_value_unbox_float64
Unexecuted instantiation: dict_ext.c:fr_value_unbox_date
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_int8
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_int16
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_int32
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_int64
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_float32
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_float64
Unexecuted instantiation: dict_fixup.c:fr_value_unbox_date
Unexecuted instantiation: dict_print.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_print.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_print.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_print.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_print.c:fr_value_unbox_int8
Unexecuted instantiation: dict_print.c:fr_value_unbox_int16
Unexecuted instantiation: dict_print.c:fr_value_unbox_int32
Unexecuted instantiation: dict_print.c:fr_value_unbox_int64
Unexecuted instantiation: dict_print.c:fr_value_unbox_float32
Unexecuted instantiation: dict_print.c:fr_value_unbox_float64
Unexecuted instantiation: dict_print.c:fr_value_unbox_date
Unexecuted instantiation: dict_test.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_test.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_test.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_test.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_test.c:fr_value_unbox_int8
Unexecuted instantiation: dict_test.c:fr_value_unbox_int16
Unexecuted instantiation: dict_test.c:fr_value_unbox_int32
Unexecuted instantiation: dict_test.c:fr_value_unbox_int64
Unexecuted instantiation: dict_test.c:fr_value_unbox_float32
Unexecuted instantiation: dict_test.c:fr_value_unbox_float64
Unexecuted instantiation: dict_test.c:fr_value_unbox_date
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_int8
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_int16
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_int32
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_int64
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_float32
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_float64
Unexecuted instantiation: dict_tokenize.c:fr_value_unbox_date
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_int8
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_int16
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_int32
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_int64
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_float32
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_float64
Unexecuted instantiation: dict_unknown.c:fr_value_unbox_date
Unexecuted instantiation: dict_util.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_util.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_util.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_util.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_util.c:fr_value_unbox_int8
Unexecuted instantiation: dict_util.c:fr_value_unbox_int16
Unexecuted instantiation: dict_util.c:fr_value_unbox_int32
Unexecuted instantiation: dict_util.c:fr_value_unbox_int64
Unexecuted instantiation: dict_util.c:fr_value_unbox_float32
Unexecuted instantiation: dict_util.c:fr_value_unbox_float64
Unexecuted instantiation: dict_util.c:fr_value_unbox_date
Unexecuted instantiation: dict_validate.c:fr_value_unbox_uint8
Unexecuted instantiation: dict_validate.c:fr_value_unbox_uint16
Unexecuted instantiation: dict_validate.c:fr_value_unbox_uint32
Unexecuted instantiation: dict_validate.c:fr_value_unbox_uint64
Unexecuted instantiation: dict_validate.c:fr_value_unbox_int8
Unexecuted instantiation: dict_validate.c:fr_value_unbox_int16
Unexecuted instantiation: dict_validate.c:fr_value_unbox_int32
Unexecuted instantiation: dict_validate.c:fr_value_unbox_int64
Unexecuted instantiation: dict_validate.c:fr_value_unbox_float32
Unexecuted instantiation: dict_validate.c:fr_value_unbox_float64
Unexecuted instantiation: dict_validate.c:fr_value_unbox_date
Unexecuted instantiation: dl.c:fr_value_unbox_uint8
Unexecuted instantiation: dl.c:fr_value_unbox_uint16
Unexecuted instantiation: dl.c:fr_value_unbox_uint32
Unexecuted instantiation: dl.c:fr_value_unbox_uint64
Unexecuted instantiation: dl.c:fr_value_unbox_int8
Unexecuted instantiation: dl.c:fr_value_unbox_int16
Unexecuted instantiation: dl.c:fr_value_unbox_int32
Unexecuted instantiation: dl.c:fr_value_unbox_int64
Unexecuted instantiation: dl.c:fr_value_unbox_float32
Unexecuted instantiation: dl.c:fr_value_unbox_float64
Unexecuted instantiation: dl.c:fr_value_unbox_date
Unexecuted instantiation: dns.c:fr_value_unbox_uint8
Unexecuted instantiation: dns.c:fr_value_unbox_uint16
Unexecuted instantiation: dns.c:fr_value_unbox_uint32
Unexecuted instantiation: dns.c:fr_value_unbox_uint64
Unexecuted instantiation: dns.c:fr_value_unbox_int8
Unexecuted instantiation: dns.c:fr_value_unbox_int16
Unexecuted instantiation: dns.c:fr_value_unbox_int32
Unexecuted instantiation: dns.c:fr_value_unbox_int64
Unexecuted instantiation: dns.c:fr_value_unbox_float32
Unexecuted instantiation: dns.c:fr_value_unbox_float64
Unexecuted instantiation: dns.c:fr_value_unbox_date
Unexecuted instantiation: edit.c:fr_value_unbox_uint8
Unexecuted instantiation: edit.c:fr_value_unbox_uint16
Unexecuted instantiation: edit.c:fr_value_unbox_uint32
Unexecuted instantiation: edit.c:fr_value_unbox_uint64
Unexecuted instantiation: edit.c:fr_value_unbox_int8
Unexecuted instantiation: edit.c:fr_value_unbox_int16
Unexecuted instantiation: edit.c:fr_value_unbox_int32
Unexecuted instantiation: edit.c:fr_value_unbox_int64
Unexecuted instantiation: edit.c:fr_value_unbox_float32
Unexecuted instantiation: edit.c:fr_value_unbox_float64
Unexecuted instantiation: edit.c:fr_value_unbox_date
Unexecuted instantiation: encode.c:fr_value_unbox_uint8
Unexecuted instantiation: encode.c:fr_value_unbox_uint16
Unexecuted instantiation: encode.c:fr_value_unbox_uint32
Unexecuted instantiation: encode.c:fr_value_unbox_uint64
Unexecuted instantiation: encode.c:fr_value_unbox_int8
Unexecuted instantiation: encode.c:fr_value_unbox_int16
Unexecuted instantiation: encode.c:fr_value_unbox_int32
Unexecuted instantiation: encode.c:fr_value_unbox_int64
Unexecuted instantiation: encode.c:fr_value_unbox_float32
Unexecuted instantiation: encode.c:fr_value_unbox_float64
Unexecuted instantiation: encode.c:fr_value_unbox_date
Unexecuted instantiation: timer.c:fr_value_unbox_uint8
Unexecuted instantiation: timer.c:fr_value_unbox_uint16
Unexecuted instantiation: timer.c:fr_value_unbox_uint32
Unexecuted instantiation: timer.c:fr_value_unbox_uint64
Unexecuted instantiation: timer.c:fr_value_unbox_int8
Unexecuted instantiation: timer.c:fr_value_unbox_int16
Unexecuted instantiation: timer.c:fr_value_unbox_int32
Unexecuted instantiation: timer.c:fr_value_unbox_int64
Unexecuted instantiation: timer.c:fr_value_unbox_float32
Unexecuted instantiation: timer.c:fr_value_unbox_float64
Unexecuted instantiation: timer.c:fr_value_unbox_date
Unexecuted instantiation: file.c:fr_value_unbox_uint8
Unexecuted instantiation: file.c:fr_value_unbox_uint16
Unexecuted instantiation: file.c:fr_value_unbox_uint32
Unexecuted instantiation: file.c:fr_value_unbox_uint64
Unexecuted instantiation: file.c:fr_value_unbox_int8
Unexecuted instantiation: file.c:fr_value_unbox_int16
Unexecuted instantiation: file.c:fr_value_unbox_int32
Unexecuted instantiation: file.c:fr_value_unbox_int64
Unexecuted instantiation: file.c:fr_value_unbox_float32
Unexecuted instantiation: file.c:fr_value_unbox_float64
Unexecuted instantiation: file.c:fr_value_unbox_date
Unexecuted instantiation: inet.c:fr_value_unbox_uint8
Unexecuted instantiation: inet.c:fr_value_unbox_uint16
Unexecuted instantiation: inet.c:fr_value_unbox_uint32
Unexecuted instantiation: inet.c:fr_value_unbox_uint64
Unexecuted instantiation: inet.c:fr_value_unbox_int8
Unexecuted instantiation: inet.c:fr_value_unbox_int16
Unexecuted instantiation: inet.c:fr_value_unbox_int32
Unexecuted instantiation: inet.c:fr_value_unbox_int64
Unexecuted instantiation: inet.c:fr_value_unbox_float32
Unexecuted instantiation: inet.c:fr_value_unbox_float64
Unexecuted instantiation: inet.c:fr_value_unbox_date
Unexecuted instantiation: log.c:fr_value_unbox_uint8
Unexecuted instantiation: log.c:fr_value_unbox_uint16
Unexecuted instantiation: log.c:fr_value_unbox_uint32
Unexecuted instantiation: log.c:fr_value_unbox_uint64
Unexecuted instantiation: log.c:fr_value_unbox_int8
Unexecuted instantiation: log.c:fr_value_unbox_int16
Unexecuted instantiation: log.c:fr_value_unbox_int32
Unexecuted instantiation: log.c:fr_value_unbox_int64
Unexecuted instantiation: log.c:fr_value_unbox_float32
Unexecuted instantiation: log.c:fr_value_unbox_float64
Unexecuted instantiation: log.c:fr_value_unbox_date
Unexecuted instantiation: packet.c:fr_value_unbox_uint8
Unexecuted instantiation: packet.c:fr_value_unbox_uint16
Unexecuted instantiation: packet.c:fr_value_unbox_uint32
Unexecuted instantiation: packet.c:fr_value_unbox_uint64
Unexecuted instantiation: packet.c:fr_value_unbox_int8
Unexecuted instantiation: packet.c:fr_value_unbox_int16
Unexecuted instantiation: packet.c:fr_value_unbox_int32
Unexecuted instantiation: packet.c:fr_value_unbox_int64
Unexecuted instantiation: packet.c:fr_value_unbox_float32
Unexecuted instantiation: packet.c:fr_value_unbox_float64
Unexecuted instantiation: packet.c:fr_value_unbox_date
Unexecuted instantiation: pair.c:fr_value_unbox_uint8
Unexecuted instantiation: pair.c:fr_value_unbox_uint16
Unexecuted instantiation: pair.c:fr_value_unbox_uint32
Unexecuted instantiation: pair.c:fr_value_unbox_uint64
Unexecuted instantiation: pair.c:fr_value_unbox_int8
Unexecuted instantiation: pair.c:fr_value_unbox_int16
Unexecuted instantiation: pair.c:fr_value_unbox_int32
Unexecuted instantiation: pair.c:fr_value_unbox_int64
Unexecuted instantiation: pair.c:fr_value_unbox_float32
Unexecuted instantiation: pair.c:fr_value_unbox_float64
Unexecuted instantiation: pair.c:fr_value_unbox_date
Unexecuted instantiation: pair_inline.c:fr_value_unbox_uint8
Unexecuted instantiation: pair_inline.c:fr_value_unbox_uint16
Unexecuted instantiation: pair_inline.c:fr_value_unbox_uint32
Unexecuted instantiation: pair_inline.c:fr_value_unbox_uint64
Unexecuted instantiation: pair_inline.c:fr_value_unbox_int8
Unexecuted instantiation: pair_inline.c:fr_value_unbox_int16
Unexecuted instantiation: pair_inline.c:fr_value_unbox_int32
Unexecuted instantiation: pair_inline.c:fr_value_unbox_int64
Unexecuted instantiation: pair_inline.c:fr_value_unbox_float32
Unexecuted instantiation: pair_inline.c:fr_value_unbox_float64
Unexecuted instantiation: pair_inline.c:fr_value_unbox_date
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_uint8
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_uint16
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_uint32
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_uint64
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_int8
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_int16
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_int32
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_int64
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_float32
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_float64
Unexecuted instantiation: pair_legacy.c:fr_value_unbox_date
Unexecuted instantiation: pair_print.c:fr_value_unbox_uint8
Unexecuted instantiation: pair_print.c:fr_value_unbox_uint16
Unexecuted instantiation: pair_print.c:fr_value_unbox_uint32
Unexecuted instantiation: pair_print.c:fr_value_unbox_uint64
Unexecuted instantiation: pair_print.c:fr_value_unbox_int8
Unexecuted instantiation: pair_print.c:fr_value_unbox_int16
Unexecuted instantiation: pair_print.c:fr_value_unbox_int32
Unexecuted instantiation: pair_print.c:fr_value_unbox_int64
Unexecuted instantiation: pair_print.c:fr_value_unbox_float32
Unexecuted instantiation: pair_print.c:fr_value_unbox_float64
Unexecuted instantiation: pair_print.c:fr_value_unbox_date
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_uint8
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_uint16
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_uint32
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_uint64
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_int8
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_int16
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_int32
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_int64
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_float32
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_float64
Unexecuted instantiation: pair_tokenize.c:fr_value_unbox_date
Unexecuted instantiation: print.c:fr_value_unbox_uint8
Unexecuted instantiation: print.c:fr_value_unbox_uint16
Unexecuted instantiation: print.c:fr_value_unbox_uint32
Unexecuted instantiation: print.c:fr_value_unbox_uint64
Unexecuted instantiation: print.c:fr_value_unbox_int8
Unexecuted instantiation: print.c:fr_value_unbox_int16
Unexecuted instantiation: print.c:fr_value_unbox_int32
Unexecuted instantiation: print.c:fr_value_unbox_int64
Unexecuted instantiation: print.c:fr_value_unbox_float32
Unexecuted instantiation: print.c:fr_value_unbox_float64
Unexecuted instantiation: print.c:fr_value_unbox_date
Unexecuted instantiation: proto.c:fr_value_unbox_uint8
Unexecuted instantiation: proto.c:fr_value_unbox_uint16
Unexecuted instantiation: proto.c:fr_value_unbox_uint32
Unexecuted instantiation: proto.c:fr_value_unbox_uint64
Unexecuted instantiation: proto.c:fr_value_unbox_int8
Unexecuted instantiation: proto.c:fr_value_unbox_int16
Unexecuted instantiation: proto.c:fr_value_unbox_int32
Unexecuted instantiation: proto.c:fr_value_unbox_int64
Unexecuted instantiation: proto.c:fr_value_unbox_float32
Unexecuted instantiation: proto.c:fr_value_unbox_float64
Unexecuted instantiation: proto.c:fr_value_unbox_date
Unexecuted instantiation: regex.c:fr_value_unbox_uint8
Unexecuted instantiation: regex.c:fr_value_unbox_uint16
Unexecuted instantiation: regex.c:fr_value_unbox_uint32
Unexecuted instantiation: regex.c:fr_value_unbox_uint64
Unexecuted instantiation: regex.c:fr_value_unbox_int8
Unexecuted instantiation: regex.c:fr_value_unbox_int16
Unexecuted instantiation: regex.c:fr_value_unbox_int32
Unexecuted instantiation: regex.c:fr_value_unbox_int64
Unexecuted instantiation: regex.c:fr_value_unbox_float32
Unexecuted instantiation: regex.c:fr_value_unbox_float64
Unexecuted instantiation: regex.c:fr_value_unbox_date
Unexecuted instantiation: socket.c:fr_value_unbox_uint8
Unexecuted instantiation: socket.c:fr_value_unbox_uint16
Unexecuted instantiation: socket.c:fr_value_unbox_uint32
Unexecuted instantiation: socket.c:fr_value_unbox_uint64
Unexecuted instantiation: socket.c:fr_value_unbox_int8
Unexecuted instantiation: socket.c:fr_value_unbox_int16
Unexecuted instantiation: socket.c:fr_value_unbox_int32
Unexecuted instantiation: socket.c:fr_value_unbox_int64
Unexecuted instantiation: socket.c:fr_value_unbox_float32
Unexecuted instantiation: socket.c:fr_value_unbox_float64
Unexecuted instantiation: socket.c:fr_value_unbox_date
Unexecuted instantiation: stats.c:fr_value_unbox_uint8
Unexecuted instantiation: stats.c:fr_value_unbox_uint16
Unexecuted instantiation: stats.c:fr_value_unbox_uint32
Unexecuted instantiation: stats.c:fr_value_unbox_uint64
Unexecuted instantiation: stats.c:fr_value_unbox_int8
Unexecuted instantiation: stats.c:fr_value_unbox_int16
Unexecuted instantiation: stats.c:fr_value_unbox_int32
Unexecuted instantiation: stats.c:fr_value_unbox_int64
Unexecuted instantiation: stats.c:fr_value_unbox_float32
Unexecuted instantiation: stats.c:fr_value_unbox_float64
Unexecuted instantiation: stats.c:fr_value_unbox_date
Unexecuted instantiation: struct.c:fr_value_unbox_uint8
Unexecuted instantiation: struct.c:fr_value_unbox_uint16
Unexecuted instantiation: struct.c:fr_value_unbox_uint32
Unexecuted instantiation: struct.c:fr_value_unbox_uint64
Unexecuted instantiation: struct.c:fr_value_unbox_int8
Unexecuted instantiation: struct.c:fr_value_unbox_int16
Unexecuted instantiation: struct.c:fr_value_unbox_int32
Unexecuted instantiation: struct.c:fr_value_unbox_int64
Unexecuted instantiation: struct.c:fr_value_unbox_float32
Unexecuted instantiation: struct.c:fr_value_unbox_float64
Unexecuted instantiation: struct.c:fr_value_unbox_date
Unexecuted instantiation: types.c:fr_value_unbox_uint8
Unexecuted instantiation: types.c:fr_value_unbox_uint16
Unexecuted instantiation: types.c:fr_value_unbox_uint32
Unexecuted instantiation: types.c:fr_value_unbox_uint64
Unexecuted instantiation: types.c:fr_value_unbox_int8
Unexecuted instantiation: types.c:fr_value_unbox_int16
Unexecuted instantiation: types.c:fr_value_unbox_int32
Unexecuted instantiation: types.c:fr_value_unbox_int64
Unexecuted instantiation: types.c:fr_value_unbox_float32
Unexecuted instantiation: types.c:fr_value_unbox_float64
Unexecuted instantiation: types.c:fr_value_unbox_date
Unexecuted instantiation: uri.c:fr_value_unbox_uint8
Unexecuted instantiation: uri.c:fr_value_unbox_uint16
Unexecuted instantiation: uri.c:fr_value_unbox_uint32
Unexecuted instantiation: uri.c:fr_value_unbox_uint64
Unexecuted instantiation: uri.c:fr_value_unbox_int8
Unexecuted instantiation: uri.c:fr_value_unbox_int16
Unexecuted instantiation: uri.c:fr_value_unbox_int32
Unexecuted instantiation: uri.c:fr_value_unbox_int64
Unexecuted instantiation: uri.c:fr_value_unbox_float32
Unexecuted instantiation: uri.c:fr_value_unbox_float64
Unexecuted instantiation: uri.c:fr_value_unbox_date
Unexecuted instantiation: value.c:fr_value_unbox_uint8
Unexecuted instantiation: value.c:fr_value_unbox_uint16
Unexecuted instantiation: value.c:fr_value_unbox_uint32
Unexecuted instantiation: value.c:fr_value_unbox_uint64
Unexecuted instantiation: value.c:fr_value_unbox_int8
Unexecuted instantiation: value.c:fr_value_unbox_int16
Unexecuted instantiation: value.c:fr_value_unbox_int32
Unexecuted instantiation: value.c:fr_value_unbox_int64
Unexecuted instantiation: value.c:fr_value_unbox_float32
Unexecuted instantiation: value.c:fr_value_unbox_float64
Unexecuted instantiation: value.c:fr_value_unbox_date
Unexecuted instantiation: fuzzer.c:fr_value_unbox_uint8
Unexecuted instantiation: fuzzer.c:fr_value_unbox_uint16
Unexecuted instantiation: fuzzer.c:fr_value_unbox_uint32
Unexecuted instantiation: fuzzer.c:fr_value_unbox_uint64
Unexecuted instantiation: fuzzer.c:fr_value_unbox_int8
Unexecuted instantiation: fuzzer.c:fr_value_unbox_int16
Unexecuted instantiation: fuzzer.c:fr_value_unbox_int32
Unexecuted instantiation: fuzzer.c:fr_value_unbox_int64
Unexecuted instantiation: fuzzer.c:fr_value_unbox_float32
Unexecuted instantiation: fuzzer.c:fr_value_unbox_float64
Unexecuted instantiation: fuzzer.c:fr_value_unbox_date
Unexecuted instantiation: base.c:fr_value_unbox_uint8
Unexecuted instantiation: base.c:fr_value_unbox_uint16
Unexecuted instantiation: base.c:fr_value_unbox_uint32
Unexecuted instantiation: base.c:fr_value_unbox_uint64
Unexecuted instantiation: base.c:fr_value_unbox_int8
Unexecuted instantiation: base.c:fr_value_unbox_int16
Unexecuted instantiation: base.c:fr_value_unbox_int32
Unexecuted instantiation: base.c:fr_value_unbox_int64
Unexecuted instantiation: base.c:fr_value_unbox_float32
Unexecuted instantiation: base.c:fr_value_unbox_float64
Unexecuted instantiation: base.c:fr_value_unbox_date
Unexecuted instantiation: raw.c:fr_value_unbox_uint8
Unexecuted instantiation: raw.c:fr_value_unbox_uint16
Unexecuted instantiation: raw.c:fr_value_unbox_uint32
Unexecuted instantiation: raw.c:fr_value_unbox_uint64
Unexecuted instantiation: raw.c:fr_value_unbox_int8
Unexecuted instantiation: raw.c:fr_value_unbox_int16
Unexecuted instantiation: raw.c:fr_value_unbox_int32
Unexecuted instantiation: raw.c:fr_value_unbox_int64
Unexecuted instantiation: raw.c:fr_value_unbox_float32
Unexecuted instantiation: raw.c:fr_value_unbox_float64
Unexecuted instantiation: raw.c:fr_value_unbox_date
Unexecuted instantiation: udp.c:fr_value_unbox_uint8
Unexecuted instantiation: udp.c:fr_value_unbox_uint16
Unexecuted instantiation: udp.c:fr_value_unbox_uint32
Unexecuted instantiation: udp.c:fr_value_unbox_uint64
Unexecuted instantiation: udp.c:fr_value_unbox_int8
Unexecuted instantiation: udp.c:fr_value_unbox_int16
Unexecuted instantiation: udp.c:fr_value_unbox_int32
Unexecuted instantiation: udp.c:fr_value_unbox_int64
Unexecuted instantiation: udp.c:fr_value_unbox_float32
Unexecuted instantiation: udp.c:fr_value_unbox_float64
Unexecuted instantiation: udp.c:fr_value_unbox_date
Unexecuted instantiation: list.c:fr_value_unbox_uint8
Unexecuted instantiation: list.c:fr_value_unbox_uint16
Unexecuted instantiation: list.c:fr_value_unbox_uint32
Unexecuted instantiation: list.c:fr_value_unbox_uint64
Unexecuted instantiation: list.c:fr_value_unbox_int8
Unexecuted instantiation: list.c:fr_value_unbox_int16
Unexecuted instantiation: list.c:fr_value_unbox_int32
Unexecuted instantiation: list.c:fr_value_unbox_int64
Unexecuted instantiation: list.c:fr_value_unbox_float32
Unexecuted instantiation: list.c:fr_value_unbox_float64
Unexecuted instantiation: list.c:fr_value_unbox_date
Unexecuted instantiation: tcp.c:fr_value_unbox_uint8
Unexecuted instantiation: tcp.c:fr_value_unbox_uint16
Unexecuted instantiation: tcp.c:fr_value_unbox_uint32
Unexecuted instantiation: tcp.c:fr_value_unbox_uint64
Unexecuted instantiation: tcp.c:fr_value_unbox_int8
Unexecuted instantiation: tcp.c:fr_value_unbox_int16
Unexecuted instantiation: tcp.c:fr_value_unbox_int32
Unexecuted instantiation: tcp.c:fr_value_unbox_int64
Unexecuted instantiation: tcp.c:fr_value_unbox_float32
Unexecuted instantiation: tcp.c:fr_value_unbox_float64
Unexecuted instantiation: tcp.c:fr_value_unbox_date
Unexecuted instantiation: abinary.c:fr_value_unbox_uint8
Unexecuted instantiation: abinary.c:fr_value_unbox_uint16
Unexecuted instantiation: abinary.c:fr_value_unbox_uint32
Unexecuted instantiation: abinary.c:fr_value_unbox_uint64
Unexecuted instantiation: abinary.c:fr_value_unbox_int8
Unexecuted instantiation: abinary.c:fr_value_unbox_int16
Unexecuted instantiation: abinary.c:fr_value_unbox_int32
Unexecuted instantiation: abinary.c:fr_value_unbox_int64
Unexecuted instantiation: abinary.c:fr_value_unbox_float32
Unexecuted instantiation: abinary.c:fr_value_unbox_float64
Unexecuted instantiation: abinary.c:fr_value_unbox_date
Unexecuted instantiation: vmps.c:fr_value_unbox_uint8
Unexecuted instantiation: vmps.c:fr_value_unbox_uint16
Unexecuted instantiation: vmps.c:fr_value_unbox_uint32
Unexecuted instantiation: vmps.c:fr_value_unbox_uint64
Unexecuted instantiation: vmps.c:fr_value_unbox_int8
Unexecuted instantiation: vmps.c:fr_value_unbox_int16
Unexecuted instantiation: vmps.c:fr_value_unbox_int32
Unexecuted instantiation: vmps.c:fr_value_unbox_int64
Unexecuted instantiation: vmps.c:fr_value_unbox_float32
Unexecuted instantiation: vmps.c:fr_value_unbox_float64
Unexecuted instantiation: vmps.c:fr_value_unbox_date
965
966
DEF_UNBOXING_FUNC(uint8_t, uint8, FR_TYPE_UINT8)
967
DEF_UNBOXING_FUNC(uint16_t, uint16, FR_TYPE_UINT16)
968
DEF_UNBOXING_FUNC(uint32_t, uint32, FR_TYPE_UINT32)
969
DEF_UNBOXING_FUNC(uint64_t, uint64, FR_TYPE_UINT64)
970
971
DEF_UNBOXING_FUNC(int8_t, int8, FR_TYPE_INT8)
972
DEF_UNBOXING_FUNC(int16_t, int16, FR_TYPE_INT16)
973
DEF_UNBOXING_FUNC(int32_t, int32, FR_TYPE_INT32)
974
DEF_UNBOXING_FUNC(int64_t, int64, FR_TYPE_INT64)
975
976
DEF_UNBOXING_FUNC(float, float32, FR_TYPE_FLOAT32)
977
DEF_UNBOXING_FUNC(double, float64, FR_TYPE_FLOAT64)
978
979
DEF_UNBOXING_FUNC(fr_unix_time_t, date, FR_TYPE_DATE)
980
981
/** Unbox simple types performing type checks
982
 *
983
 * @param[out] _var to write to.
984
 * @param[in] _box  to unbox.
985
 */
986
#define fr_value_unbox_shallow(_var, _box) \
987
_Generic((_var), \
988
  uint8_t *   : fr_value_unbox_uint8, \
989
  uint16_t *    : fr_value_unbox_uint16, \
990
  uint32_t *    : fr_value_unbox_uint32, \
991
  uint64_t *    : fr_value_unbox_uint64, \
992
  int8_t *    : fr_value_unbox_int8, \
993
  int16_t *   : fr_value_unbox_int16, \
994
  int32_t *   : fr_value_unbox_int32, \
995
  int64_t *   : fr_value_unbox_int64, \
996
  float *     : fr_value_unbox_float32, \
997
  double *    : fr_value_unbox_float64 \
998
)(_var, _box)
999
1000
/** @} */
1001
1002
/*
1003
 *  Comparison
1004
 */
1005
int8_t    fr_value_box_cmp(fr_value_box_t const *a, fr_value_box_t const *b)
1006
    CC_HINT(nonnull);
1007
1008
int   fr_value_box_cmp_op(fr_token_t op, fr_value_box_t const *a, fr_value_box_t const *b)
1009
    CC_HINT(nonnull);
1010
1011
/*
1012
 *  Conversion
1013
 */
1014
size_t    fr_value_str_unescape(fr_sbuff_t *out, fr_sbuff_t *in, size_t inlen, char quote)
1015
    CC_HINT(nonnull);
1016
1017
size_t    fr_value_substr_unescape(fr_sbuff_t *out, fr_sbuff_t *in, size_t inlen, char quote)
1018
    CC_HINT(nonnull);
1019
1020
static inline size_t fr_value_str_aunescape(TALLOC_CTX *ctx, char **out, fr_sbuff_t *in, size_t inlen, char quote)
1021
SBUFF_OUT_TALLOC_FUNC_DEF(fr_value_str_unescape, in, inlen, quote)
1022
1023
static inline size_t fr_value_substr_aunescape(TALLOC_CTX *ctx, char **out, fr_sbuff_t *in, size_t inlen, char quote)
1024
SBUFF_OUT_TALLOC_FUNC_DEF(fr_value_substr_unescape, in, inlen, quote)
1025
1026
int   fr_value_box_hton(fr_value_box_t *dst, fr_value_box_t const *src)
1027
    CC_HINT(nonnull);
1028
1029
size_t    fr_value_box_network_length(fr_value_box_t const *value)
1030
    CC_HINT(nonnull);
1031
1032
ssize_t   fr_value_box_to_network(fr_dbuff_t *dbuff, fr_value_box_t const *value);
1033
0
#define FR_VALUE_BOX_TO_NETWORK_RETURN(_dbuff, _value) FR_DBUFF_RETURN(fr_value_box_to_network, _dbuff, _value)
1034
1035
int   fr_value_box_to_key(uint8_t **out, size_t *outlen, fr_value_box_t const *value)
1036
    CC_HINT(nonnull);
1037
1038
/** Special value to indicate fr_value_box_from_network experienced a general error
1039
 */
1040
9.39k
#define FR_VALUE_BOX_NET_ERROR  SSIZE_MIN
1041
1042
/** Special value to indicate fr_value_box_from_network hit an out of memory error
1043
 */
1044
731
#define FR_VALUE_BOX_NET_OOM  (FR_VALUE_BOX_NET_ERROR + 1)
1045
1046
/** Special value to ensure other encoding/decoding errors don't overlap
1047
 */
1048
#define FR_VALUE_BOX_NET_MAX  (FR_VALUE_BOX_NET_OOM + 1)
1049
1050
ssize_t   fr_value_box_from_network(TALLOC_CTX *ctx,
1051
            fr_value_box_t *dst, fr_type_t type, fr_dict_attr_t const *enumv,
1052
            fr_dbuff_t *dbuff, size_t len, bool tainted)
1053
    CC_HINT(nonnull(2,5));
1054
1055
ssize_t   fr_value_box_ipaddr_from_network(fr_value_box_t *dst, fr_type_t type, fr_dict_attr_t const *enumv,
1056
             int prefix_len, uint8_t const *data, size_t data_len, bool fixed, bool tainted)
1057
    CC_HINT(nonnull(1,5));
1058
1059
int   fr_value_box_cast(TALLOC_CTX *ctx, fr_value_box_t *dst,
1060
          fr_type_t dst_type, fr_dict_attr_t const *dst_enumv,
1061
          fr_value_box_t const *src)
1062
    CC_HINT(warn_unused_result,nonnull(2,5));
1063
1064
int   fr_value_box_cast_in_place(TALLOC_CTX *ctx, fr_value_box_t *vb,
1065
             fr_type_t dst_type, fr_dict_attr_t const *dst_enumv)
1066
    CC_HINT(warn_unused_result,nonnull(1));
1067
1068
uint64_t        fr_value_box_as_uint64(fr_value_box_t const *src)
1069
    CC_HINT(warn_unused_result,nonnull);
1070
1071
bool    fr_value_box_is_truthy(fr_value_box_t const *box)
1072
    CC_HINT(nonnull(1));
1073
1074
int   fr_value_box_ipaddr(fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1075
            fr_ipaddr_t const *ipaddr, bool tainted)
1076
    CC_HINT(nonnull(1,3));
1077
1078
int   fr_value_unbox_ipaddr(fr_ipaddr_t *dst, fr_value_box_t *src)
1079
    CC_HINT(nonnull);
1080
1081
0
#define   fr_value_box_mark_safe_for(_box, _safe_for) _fr_value_box_mark_safe_for(_box, (fr_value_box_safe_for_t)_safe_for)
1082
void    _fr_value_box_mark_safe_for(fr_value_box_t *box, fr_value_box_safe_for_t safe_for)
1083
    CC_HINT(nonnull);
1084
1085
void    fr_value_box_mark_unsafe(fr_value_box_t *box)
1086
    CC_HINT(nonnull);
1087
1088
0
#define   fr_value_box_is_safe_for(_box, _safe_for) ((_box->safe_for == (fr_value_box_safe_for_t)_safe_for) || (_box->safe_for == FR_VALUE_BOX_SAFE_FOR_ANY))
1089
#define   fr_value_box_is_safe_for_only(_box, _safe_for) (_box->safe_for == (fr_value_box_safe_for_t)_safe_for)
1090
1091
void    fr_value_box_list_mark_safe_for(fr_value_box_list_t *list, fr_value_box_safe_for_t safe_for);
1092
1093
void    fr_value_box_safety_copy(fr_value_box_t *out, fr_value_box_t const *in) CC_HINT(nonnull);
1094
void    fr_value_box_safety_copy_changed(fr_value_box_t *out, fr_value_box_t const *in) CC_HINT(nonnull);
1095
void    fr_value_box_safety_merge(fr_value_box_t *out, fr_value_box_t const *in) CC_HINT(nonnull);
1096
1097
static inline CC_HINT(nonnull, always_inline)
1098
bool fr_value_box_is_secret(fr_value_box_t const *box)
1099
0
{
1100
0
  return box->secret;
1101
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_util.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_der.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_is_secret
Unexecuted instantiation: base32.c:fr_value_box_is_secret
Unexecuted instantiation: base64.c:fr_value_box_is_secret
Unexecuted instantiation: calc.c:fr_value_box_is_secret
Unexecuted instantiation: cbor.c:fr_value_box_is_secret
Unexecuted instantiation: decode.c:fr_value_box_is_secret
Unexecuted instantiation: dict_ext.c:fr_value_box_is_secret
Unexecuted instantiation: dict_fixup.c:fr_value_box_is_secret
Unexecuted instantiation: dict_print.c:fr_value_box_is_secret
Unexecuted instantiation: dict_test.c:fr_value_box_is_secret
Unexecuted instantiation: dict_tokenize.c:fr_value_box_is_secret
Unexecuted instantiation: dict_unknown.c:fr_value_box_is_secret
Unexecuted instantiation: dict_util.c:fr_value_box_is_secret
Unexecuted instantiation: dict_validate.c:fr_value_box_is_secret
Unexecuted instantiation: dl.c:fr_value_box_is_secret
Unexecuted instantiation: dns.c:fr_value_box_is_secret
Unexecuted instantiation: edit.c:fr_value_box_is_secret
Unexecuted instantiation: encode.c:fr_value_box_is_secret
Unexecuted instantiation: timer.c:fr_value_box_is_secret
Unexecuted instantiation: file.c:fr_value_box_is_secret
Unexecuted instantiation: inet.c:fr_value_box_is_secret
Unexecuted instantiation: log.c:fr_value_box_is_secret
Unexecuted instantiation: packet.c:fr_value_box_is_secret
Unexecuted instantiation: pair.c:fr_value_box_is_secret
Unexecuted instantiation: pair_inline.c:fr_value_box_is_secret
Unexecuted instantiation: pair_legacy.c:fr_value_box_is_secret
Unexecuted instantiation: pair_print.c:fr_value_box_is_secret
Unexecuted instantiation: pair_tokenize.c:fr_value_box_is_secret
Unexecuted instantiation: print.c:fr_value_box_is_secret
Unexecuted instantiation: proto.c:fr_value_box_is_secret
Unexecuted instantiation: regex.c:fr_value_box_is_secret
Unexecuted instantiation: socket.c:fr_value_box_is_secret
Unexecuted instantiation: stats.c:fr_value_box_is_secret
Unexecuted instantiation: struct.c:fr_value_box_is_secret
Unexecuted instantiation: types.c:fr_value_box_is_secret
Unexecuted instantiation: uri.c:fr_value_box_is_secret
Unexecuted instantiation: value.c:fr_value_box_is_secret
Unexecuted instantiation: fuzzer.c:fr_value_box_is_secret
Unexecuted instantiation: base.c:fr_value_box_is_secret
Unexecuted instantiation: raw.c:fr_value_box_is_secret
Unexecuted instantiation: udp.c:fr_value_box_is_secret
Unexecuted instantiation: list.c:fr_value_box_is_secret
Unexecuted instantiation: tcp.c:fr_value_box_is_secret
Unexecuted instantiation: abinary.c:fr_value_box_is_secret
Unexecuted instantiation: vmps.c:fr_value_box_is_secret
1102
1103
static inline CC_HINT(nonnull)
1104
bool fr_value_box_contains_secret(fr_value_box_t const *box)
1105
0
{
1106
0
  fr_value_box_t const *vb = NULL;
1107
1108
0
  if (box->secret) return true;
1109
0
  if (box->type == FR_TYPE_GROUP) {
1110
0
    while ((vb = fr_value_box_list_next(&box->vb_group, vb))) {
1111
0
      if (fr_value_box_contains_secret(vb)) return true;
1112
0
    }
1113
0
  }
1114
0
  return false;
1115
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_util.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_der.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_contains_secret
Unexecuted instantiation: base32.c:fr_value_box_contains_secret
Unexecuted instantiation: base64.c:fr_value_box_contains_secret
Unexecuted instantiation: calc.c:fr_value_box_contains_secret
Unexecuted instantiation: cbor.c:fr_value_box_contains_secret
Unexecuted instantiation: decode.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_ext.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_fixup.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_print.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_test.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_tokenize.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_unknown.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_util.c:fr_value_box_contains_secret
Unexecuted instantiation: dict_validate.c:fr_value_box_contains_secret
Unexecuted instantiation: dl.c:fr_value_box_contains_secret
Unexecuted instantiation: dns.c:fr_value_box_contains_secret
Unexecuted instantiation: edit.c:fr_value_box_contains_secret
Unexecuted instantiation: encode.c:fr_value_box_contains_secret
Unexecuted instantiation: timer.c:fr_value_box_contains_secret
Unexecuted instantiation: file.c:fr_value_box_contains_secret
Unexecuted instantiation: inet.c:fr_value_box_contains_secret
Unexecuted instantiation: log.c:fr_value_box_contains_secret
Unexecuted instantiation: packet.c:fr_value_box_contains_secret
Unexecuted instantiation: pair.c:fr_value_box_contains_secret
Unexecuted instantiation: pair_inline.c:fr_value_box_contains_secret
Unexecuted instantiation: pair_legacy.c:fr_value_box_contains_secret
Unexecuted instantiation: pair_print.c:fr_value_box_contains_secret
Unexecuted instantiation: pair_tokenize.c:fr_value_box_contains_secret
Unexecuted instantiation: print.c:fr_value_box_contains_secret
Unexecuted instantiation: proto.c:fr_value_box_contains_secret
Unexecuted instantiation: regex.c:fr_value_box_contains_secret
Unexecuted instantiation: socket.c:fr_value_box_contains_secret
Unexecuted instantiation: stats.c:fr_value_box_contains_secret
Unexecuted instantiation: struct.c:fr_value_box_contains_secret
Unexecuted instantiation: types.c:fr_value_box_contains_secret
Unexecuted instantiation: uri.c:fr_value_box_contains_secret
Unexecuted instantiation: value.c:fr_value_box_contains_secret
Unexecuted instantiation: fuzzer.c:fr_value_box_contains_secret
Unexecuted instantiation: base.c:fr_value_box_contains_secret
Unexecuted instantiation: raw.c:fr_value_box_contains_secret
Unexecuted instantiation: udp.c:fr_value_box_contains_secret
Unexecuted instantiation: list.c:fr_value_box_contains_secret
Unexecuted instantiation: tcp.c:fr_value_box_contains_secret
Unexecuted instantiation: abinary.c:fr_value_box_contains_secret
Unexecuted instantiation: vmps.c:fr_value_box_contains_secret
1116
1117
static inline CC_HINT(nonnull, always_inline)
1118
void fr_value_box_set_secret(fr_value_box_t *box, bool secret)
1119
0
{
1120
0
  box->secret = secret;
1121
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_util.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_der.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_set_secret
Unexecuted instantiation: base32.c:fr_value_box_set_secret
Unexecuted instantiation: base64.c:fr_value_box_set_secret
Unexecuted instantiation: calc.c:fr_value_box_set_secret
Unexecuted instantiation: cbor.c:fr_value_box_set_secret
Unexecuted instantiation: decode.c:fr_value_box_set_secret
Unexecuted instantiation: dict_ext.c:fr_value_box_set_secret
Unexecuted instantiation: dict_fixup.c:fr_value_box_set_secret
Unexecuted instantiation: dict_print.c:fr_value_box_set_secret
Unexecuted instantiation: dict_test.c:fr_value_box_set_secret
Unexecuted instantiation: dict_tokenize.c:fr_value_box_set_secret
Unexecuted instantiation: dict_unknown.c:fr_value_box_set_secret
Unexecuted instantiation: dict_util.c:fr_value_box_set_secret
Unexecuted instantiation: dict_validate.c:fr_value_box_set_secret
Unexecuted instantiation: dl.c:fr_value_box_set_secret
Unexecuted instantiation: dns.c:fr_value_box_set_secret
Unexecuted instantiation: edit.c:fr_value_box_set_secret
Unexecuted instantiation: encode.c:fr_value_box_set_secret
Unexecuted instantiation: timer.c:fr_value_box_set_secret
Unexecuted instantiation: file.c:fr_value_box_set_secret
Unexecuted instantiation: inet.c:fr_value_box_set_secret
Unexecuted instantiation: log.c:fr_value_box_set_secret
Unexecuted instantiation: packet.c:fr_value_box_set_secret
Unexecuted instantiation: pair.c:fr_value_box_set_secret
Unexecuted instantiation: pair_inline.c:fr_value_box_set_secret
Unexecuted instantiation: pair_legacy.c:fr_value_box_set_secret
Unexecuted instantiation: pair_print.c:fr_value_box_set_secret
Unexecuted instantiation: pair_tokenize.c:fr_value_box_set_secret
Unexecuted instantiation: print.c:fr_value_box_set_secret
Unexecuted instantiation: proto.c:fr_value_box_set_secret
Unexecuted instantiation: regex.c:fr_value_box_set_secret
Unexecuted instantiation: socket.c:fr_value_box_set_secret
Unexecuted instantiation: stats.c:fr_value_box_set_secret
Unexecuted instantiation: struct.c:fr_value_box_set_secret
Unexecuted instantiation: types.c:fr_value_box_set_secret
Unexecuted instantiation: uri.c:fr_value_box_set_secret
Unexecuted instantiation: value.c:fr_value_box_set_secret
Unexecuted instantiation: fuzzer.c:fr_value_box_set_secret
Unexecuted instantiation: base.c:fr_value_box_set_secret
Unexecuted instantiation: raw.c:fr_value_box_set_secret
Unexecuted instantiation: udp.c:fr_value_box_set_secret
Unexecuted instantiation: list.c:fr_value_box_set_secret
Unexecuted instantiation: tcp.c:fr_value_box_set_secret
Unexecuted instantiation: abinary.c:fr_value_box_set_secret
Unexecuted instantiation: vmps.c:fr_value_box_set_secret
1122
1123
/** Decide if we need an enum prefix.
1124
 *
1125
 *  We don't print the prefix in fr_value_box_print(), even though that function is the inverse of
1126
 *  fr_value_box_from_str().  If we always add the prefix there, then lots of code needs to be updated to
1127
 *  suppress printing the prefix.  e.g. When using %{Service-Type} in a filename, or %{Acct-Status-Type} in an
1128
 *  SQL query, etc.
1129
 *
1130
 *  Instead, the various unlang / debug routines add the prefix manually.  This way ends up being less
1131
 *  complicated, and has fewer cornrer cases than the "right" way of doing it.
1132
 *
1133
 *  Note that we don't return the enum name for booleans.  Those are printed as "true / false", or "yes / no"
1134
 *  without the "::" prefix.
1135
 */
1136
static inline CC_HINT(nonnull, always_inline)
1137
char const *fr_value_box_enum_name(fr_value_box_t const *box)
1138
0
{
1139
0
  if (fr_type_is_leaf(box->type) && (box->type != FR_TYPE_STRING) &&
1140
0
      box->enumv && box->enumv->flags.has_value &&
1141
0
      ((box->type != FR_TYPE_BOOL) || da_is_bit_field(box->enumv))) {
1142
0
    return fr_dict_enum_name_by_value(box->enumv, box);
1143
0
  }
1144
1145
0
  return NULL;
1146
0
}
Unexecuted instantiation: fuzzer_dhcpv6.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_util.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_dhcpv4.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_cbor.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_der.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_dns.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_tacacs.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_bfd.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_radius.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_tftp.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer_vmps.c:fr_value_box_enum_name
Unexecuted instantiation: base32.c:fr_value_box_enum_name
Unexecuted instantiation: base64.c:fr_value_box_enum_name
Unexecuted instantiation: calc.c:fr_value_box_enum_name
Unexecuted instantiation: cbor.c:fr_value_box_enum_name
Unexecuted instantiation: decode.c:fr_value_box_enum_name
Unexecuted instantiation: dict_ext.c:fr_value_box_enum_name
Unexecuted instantiation: dict_fixup.c:fr_value_box_enum_name
Unexecuted instantiation: dict_print.c:fr_value_box_enum_name
Unexecuted instantiation: dict_test.c:fr_value_box_enum_name
Unexecuted instantiation: dict_tokenize.c:fr_value_box_enum_name
Unexecuted instantiation: dict_unknown.c:fr_value_box_enum_name
Unexecuted instantiation: dict_util.c:fr_value_box_enum_name
Unexecuted instantiation: dict_validate.c:fr_value_box_enum_name
Unexecuted instantiation: dl.c:fr_value_box_enum_name
Unexecuted instantiation: dns.c:fr_value_box_enum_name
Unexecuted instantiation: edit.c:fr_value_box_enum_name
Unexecuted instantiation: encode.c:fr_value_box_enum_name
Unexecuted instantiation: timer.c:fr_value_box_enum_name
Unexecuted instantiation: file.c:fr_value_box_enum_name
Unexecuted instantiation: inet.c:fr_value_box_enum_name
Unexecuted instantiation: log.c:fr_value_box_enum_name
Unexecuted instantiation: packet.c:fr_value_box_enum_name
Unexecuted instantiation: pair.c:fr_value_box_enum_name
Unexecuted instantiation: pair_inline.c:fr_value_box_enum_name
Unexecuted instantiation: pair_legacy.c:fr_value_box_enum_name
Unexecuted instantiation: pair_print.c:fr_value_box_enum_name
Unexecuted instantiation: pair_tokenize.c:fr_value_box_enum_name
Unexecuted instantiation: print.c:fr_value_box_enum_name
Unexecuted instantiation: proto.c:fr_value_box_enum_name
Unexecuted instantiation: regex.c:fr_value_box_enum_name
Unexecuted instantiation: socket.c:fr_value_box_enum_name
Unexecuted instantiation: stats.c:fr_value_box_enum_name
Unexecuted instantiation: struct.c:fr_value_box_enum_name
Unexecuted instantiation: types.c:fr_value_box_enum_name
Unexecuted instantiation: uri.c:fr_value_box_enum_name
Unexecuted instantiation: value.c:fr_value_box_enum_name
Unexecuted instantiation: fuzzer.c:fr_value_box_enum_name
Unexecuted instantiation: base.c:fr_value_box_enum_name
Unexecuted instantiation: raw.c:fr_value_box_enum_name
Unexecuted instantiation: udp.c:fr_value_box_enum_name
Unexecuted instantiation: list.c:fr_value_box_enum_name
Unexecuted instantiation: tcp.c:fr_value_box_enum_name
Unexecuted instantiation: abinary.c:fr_value_box_enum_name
Unexecuted instantiation: vmps.c:fr_value_box_enum_name
1147
1148
1149
/** @name Assign and manipulate binary-unsafe C strings
1150
 *
1151
 * @{
1152
 */
1153
int   fr_value_box_strdup(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1154
            char const *src, bool tainted)
1155
    CC_HINT(nonnull(2,4));
1156
1157
int   fr_value_box_strtrim(TALLOC_CTX *ctx, fr_value_box_t *vb)
1158
    CC_HINT(nonnull(1));
1159
1160
int   fr_value_box_vasprintf(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv, bool tainted,
1161
               char const *fmt, va_list ap)
1162
    CC_HINT(nonnull(2,5), format(printf,5,0));
1163
1164
int   fr_value_box_asprintf(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv, bool tainted,
1165
              char const *fmt, ...)
1166
    CC_HINT(format(printf,5,6), nonnull(2,5));
1167
1168
void    fr_value_box_strdup_shallow(fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1169
              char const *src, bool tainted)
1170
    CC_HINT(nonnull(1,3));
1171
1172
void    fr_value_box_strdup_shallow_replace(fr_value_box_t *vb, char const *src, ssize_t len)
1173
    CC_HINT(nonnull);
1174
/** @} */
1175
1176
/** @name Assign and manipulate binary-safe strings
1177
 *
1178
 * @{
1179
 */
1180
int   fr_value_box_bstr_alloc(TALLOC_CTX *ctx, char **out, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1181
          size_t len, bool tainted)
1182
    CC_HINT(nonnull(3));
1183
1184
int   fr_value_box_bstr_realloc(TALLOC_CTX *ctx, char **out, fr_value_box_t *dst, size_t len)
1185
    CC_HINT(nonnull(3));
1186
1187
int   fr_value_box_bstrndup(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1188
              char const *src, size_t len, bool tainted)
1189
    CC_HINT(nonnull(2)); /* src may be NULL if len == 0 */
1190
1191
int   fr_value_box_bstrndup_dbuff(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1192
              fr_dbuff_t *dbuff, size_t len, bool tainted)
1193
    CC_HINT(nonnull(2,4));
1194
1195
int   fr_value_box_bstrdup_buffer(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1196
             char const *src, bool tainted)
1197
    CC_HINT(nonnull(2,4));
1198
1199
void    fr_value_box_bstrndup_shallow(fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1200
                char const *src, size_t len, bool tainted)
1201
    CC_HINT(nonnull(1,3));
1202
1203
int   fr_value_box_bstrdup_buffer_shallow(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1204
                char const *src, bool tainted)
1205
    CC_HINT(nonnull(2,4));
1206
1207
/** @} */
1208
1209
/** @name Assign and manipulate octets strings
1210
 *
1211
 * @{
1212
 */
1213
int   fr_value_box_mem_alloc(TALLOC_CTX *ctx, uint8_t **out, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1214
               size_t len, bool tainted)
1215
    CC_HINT(nonnull(3));
1216
1217
int   fr_value_box_mem_realloc(TALLOC_CTX *ctx, uint8_t **out, fr_value_box_t *dst, size_t len)
1218
    CC_HINT(nonnull(3));
1219
1220
int   fr_value_box_memdup(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1221
            uint8_t const *src, size_t len, bool tainted)
1222
    CC_HINT(nonnull(2)); /* src may be NULL if len == 0 */
1223
1224
int   fr_value_box_memdup_dbuff(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1225
            fr_dbuff_t *dbuff, size_t len, bool tainted)
1226
    CC_HINT(nonnull(2,4));
1227
1228
int   fr_value_box_memdup_buffer(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1229
             uint8_t const *src, bool tainted)
1230
    CC_HINT(nonnull(2,4));
1231
1232
void    fr_value_box_memdup_shallow(fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1233
              uint8_t const *src, size_t len, bool tainted)
1234
    CC_HINT(nonnull(1,3));
1235
1236
void    fr_value_box_memdup_buffer_shallow(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_dict_attr_t const *enumv,
1237
               uint8_t const *src, bool tainted)
1238
    CC_HINT(nonnull(2,4));
1239
1240
/** @} */
1241
1242
void    fr_value_box_increment(fr_value_box_t *vb)
1243
    CC_HINT(nonnull);
1244
1245
1246
1247
void    fr_value_box_set_cursor(fr_value_box_t *dst, fr_type_t type, void *ptr, char const *name) CC_HINT(nonnull);
1248
1249
#define   fr_value_box_get_cursor(_dst) talloc_get_type_abort((_dst)->vb_cursor, fr_dcursor_t)
1250
1251
void    fr_value_box_set_attr(fr_value_box_t *dst, fr_dict_attr_t const *da);
1252
1253
/** @name Parsing
1254
 *
1255
 * @{
1256
 */
1257
ssize_t   fr_value_box_from_substr(TALLOC_CTX *ctx, fr_value_box_t *dst,
1258
           fr_type_t dst_type, fr_dict_attr_t const *dst_enumv,
1259
           fr_sbuff_t *in, fr_sbuff_parse_rules_t const *rules)
1260
    CC_HINT(nonnull(2,5));
1261
1262
ssize_t   fr_value_box_from_str(TALLOC_CTX *ctx, fr_value_box_t *dst,
1263
              fr_type_t dst_type, fr_dict_attr_t const *dst_enumv,
1264
              char const *in, size_t inlen,
1265
              fr_sbuff_unescape_rules_t const *erules)
1266
    CC_HINT(nonnull(2,5));
1267
/** @} */
1268
1269
/** @name Work with lists of boxed values
1270
 *
1271
 * @{
1272
 */
1273
ssize_t   fr_value_box_list_concat_as_string(fr_value_box_t *safety, fr_sbuff_t *sbuff, fr_value_box_list_t *list,
1274
                char const *sep, size_t sep_len, fr_sbuff_escape_rules_t const *e_rules,
1275
                fr_value_box_list_action_t proc_action, fr_value_box_safe_for_t safe_for, bool flatten)
1276
    CC_HINT(nonnull(2,3));
1277
1278
ssize_t   fr_value_box_list_concat_as_octets(fr_value_box_t *safety, fr_dbuff_t *dbuff, fr_value_box_list_t *list,
1279
               uint8_t const *sep, size_t sep_len,
1280
               fr_value_box_list_action_t proc_action, bool flatten)
1281
    CC_HINT(nonnull(2,3));
1282
1283
int   fr_value_box_list_concat_in_place(TALLOC_CTX *ctx,
1284
              fr_value_box_t *out, fr_value_box_list_t *list, fr_type_t type,
1285
              fr_value_box_list_action_t proc_action, bool flatten,
1286
              size_t max_size)
1287
    CC_HINT(nonnull(2,3));
1288
1289
void    fr_value_box_flatten(TALLOC_CTX *ctx, fr_value_box_list_t *list, bool steal, bool free)
1290
    CC_HINT(nonnull(2));
1291
1292
char    *fr_value_box_list_aprint(TALLOC_CTX *ctx, fr_value_box_list_t const *list, char const *delim,
1293
            fr_sbuff_escape_rules_t const *e_rules)
1294
    CC_HINT(nonnull(2));
1295
1296
char    *fr_value_box_list_aprint_secure(TALLOC_CTX *ctx, fr_value_box_list_t const *list, char const *delim,
1297
             fr_sbuff_escape_rules_t const *e_rules)
1298
    CC_HINT(nonnull(2));
1299
1300
int   fr_value_box_list_acopy(TALLOC_CTX *ctx, fr_value_box_list_t *out, fr_value_box_list_t const *in)
1301
    CC_HINT(nonnull(2,3));
1302
1303
bool    fr_value_box_list_tainted(fr_value_box_list_t const *head)
1304
    CC_HINT(nonnull(1));
1305
1306
void    fr_value_box_list_taint(fr_value_box_list_t *head)
1307
    CC_HINT(nonnull(1));
1308
1309
void    fr_value_box_list_untaint(fr_value_box_list_t *head)
1310
    CC_HINT(nonnull(1));
1311
/** @} */
1312
1313
/** @name Print the value of a value box as a string
1314
 *
1315
 * @{
1316
 */
1317
ssize_t   fr_value_box_print(fr_sbuff_t *out, fr_value_box_t const *data, fr_sbuff_escape_rules_t const *e_rules)
1318
    CC_HINT(nonnull(1,2));
1319
1320
ssize_t   fr_value_box_print_quoted(fr_sbuff_t *out, fr_value_box_t const *data, fr_token_t quote)
1321
    CC_HINT(nonnull);
1322
1323
static inline CC_HINT(nonnull(2,3))
1324
    fr_slen_t fr_value_box_aprint(TALLOC_CTX *ctx, char **out,
1325
                fr_value_box_t const *data, fr_sbuff_escape_rules_t const *e_rules)
1326
    SBUFF_OUT_TALLOC_FUNC_NO_LEN_DEF(fr_value_box_print, data, e_rules)
Unexecuted instantiation: print.c:fr_value_box_aprint
Unexecuted instantiation: regex.c:fr_value_box_aprint
Unexecuted instantiation: value.c:fr_value_box_aprint
1327
1328
static inline CC_HINT(nonnull(2,3))
1329
    fr_slen_t fr_value_box_aprint_quoted(TALLOC_CTX *ctx, char **out,
1330
                 fr_value_box_t const *data, fr_token_t quote)
1331
    SBUFF_OUT_TALLOC_FUNC_NO_LEN_DEF(fr_value_box_print_quoted, data, quote)
1332
1333
/** @} */
1334
/** @name Hashing
1335
 *
1336
 * @{
1337
 */
1338
uint32_t  fr_value_box_hash(fr_value_box_t const *vb);
1339
1340
/** @} */
1341
1342
void    fr_value_box_verify(char const *file, int line, fr_value_box_t const *vb)
1343
    CC_HINT(nonnull(3));
1344
void    fr_value_box_list_verify(char const *file, int line, fr_value_box_list_t const *list)
1345
    CC_HINT(nonnull(3));
1346
1347
#ifdef WITH_VERIFY_PTR
1348
#  define VALUE_BOX_VERIFY(_x) fr_value_box_verify(__FILE__, __LINE__, _x)
1349
#  define VALUE_BOX_LIST_VERIFY(_x) fr_value_box_list_verify(__FILE__, __LINE__, _x)
1350
#else
1351
/*
1352
 *  Even if were building without WITH_VERIFY_PTR
1353
 *  the pointer must not be NULL when these various macros are used
1354
 *  so we can add some sneaky asserts.
1355
 */
1356
#  define VALUE_BOX_VERIFY(_x) fr_assert(_x)
1357
#  define VALUE_BOX_LIST_VERIFY(_x) fr_assert(_x)
1358
#  define VALUE_BOX_VERIFY(_x) fr_assert(_x)
1359
#  define VALUE_BOX_LIST_VERIFY(_x) fr_assert(_x)
1360
#endif
1361
1362
/** @name Debug functions
1363
 *
1364
 * @{
1365
 */
1366
void fr_value_box_list_debug(FILE *fp, fr_value_box_list_t const *head);
1367
void fr_value_box_debug(FILE *fp, fr_value_box_t const *vb);
1368
/** @} */
1369
1370
#undef _CONST
1371
1372
#ifdef __cplusplus
1373
}
1374
#endif