/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 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 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 |