]> git.ipfire.org Git - thirdparty/freeradius-server.git/log
thirdparty/freeradius-server.git
3 years agoInitialise all the fields in find Closes #4633
Arran Cudbard-Bell [Wed, 27 Jul 2022 02:14:56 +0000 (10:14 +0800)] 
Initialise all the fields in find Closes #4633

3 years agoAllow cancel->complete transition here too
Arran Cudbard-Bell [Wed, 27 Jul 2022 01:55:30 +0000 (09:55 +0800)] 
Allow cancel->complete transition here too

3 years agoDeal with edge case in LDAP cancellations
Arran Cudbard-Bell [Tue, 26 Jul 2022 15:50:38 +0000 (23:50 +0800)] 
Deal with edge case in LDAP cancellations

3 years agoAllow the transition from CANCEL to CANCEL_COMPLETE
Arran Cudbard-Bell [Tue, 26 Jul 2022 15:50:23 +0000 (23:50 +0800)] 
Allow the transition from CANCEL to CANCEL_COMPLETE

3 years agoAdd VS code debugger config for gdb
Nick Porter [Tue, 26 Jul 2022 13:34:08 +0000 (14:34 +0100)] 
Add VS code debugger config for gdb

3 years agonotes for the future
Alan T. DeKok [Mon, 25 Jul 2022 11:21:22 +0000 (07:21 -0400)] 
notes for the future

3 years agocall init_ssl(), not init_crypto()
Alan T. DeKok [Mon, 25 Jul 2022 11:19:15 +0000 (07:19 -0400)] 
call init_ssl(), not init_crypto()

init_ssl() calls init_crypto(), too.  And we need both in order
to pre-load all error strings.  Helps with comments in #4624

3 years agoFix CANONICAL_PATH when $(top_srcdir) has symlinks (#4611)
Max Khon [Mon, 25 Jul 2022 11:14:16 +0000 (14:14 +0300)] 
Fix CANONICAL_PATH when $(top_srcdir) has symlinks (#4611)

* Fix CANONICAL_PATH when $(top_srcdir) has symlinks:
in this case $(CURDIR) contains real path (with symlinks resolved)
and thus is not equal to $(top_srcdir)

This make most of changes in rev c2a6977a551acea0d927daa324e0353fa64ba221 not necessary

* Revert most of rev c2a6977a551acea0d927daa324e0353fa64ba221
(all changes related to $(CURDIR) != $(top_srcdir))

3 years agomove to using new edit syntax
Alan T. DeKok [Sun, 24 Jul 2022 13:55:26 +0000 (09:55 -0400)] 
move to using new edit syntax

3 years agoundocument "update", and document conversions to new syntax
Alan T. DeKok [Sun, 24 Jul 2022 13:54:48 +0000 (09:54 -0400)] 
undocument "update", and document conversions to new syntax

3 years agoalways free cc->pool, to avoid leaks
Alan T. DeKok [Sat, 23 Jul 2022 17:40:55 +0000 (13:40 -0400)] 
always free cc->pool, to avoid leaks

3 years agoadd and use fr_pair_list_copy_to_box()
Alan T. DeKok [Sat, 23 Jul 2022 13:59:45 +0000 (09:59 -0400)] 
add and use fr_pair_list_copy_to_box()

as we can't call fr_value_box_copy() on vp->vp_group.

3 years agoset fail return code
Alan T. DeKok [Sat, 23 Jul 2022 13:08:13 +0000 (09:08 -0400)] 
set fail return code

3 years agomove reset of indent to "stop" function
Alan T. DeKok [Fri, 22 Jul 2022 14:43:23 +0000 (10:43 -0400)] 
move reset of indent to "stop" function

which is arguably where it belongs.

3 years agocreate LHS vp on merge RHS and union, too.
Alan T. DeKok [Thu, 21 Jul 2022 19:10:28 +0000 (15:10 -0400)] 
create LHS vp on merge RHS and union, too.

nothing MERGE-RHS FOO == foo
nothing UNION FOO == foo

3 years agorewrite merge, union, intersection to use fr_pair_next() etc.
Alan T. DeKok [Thu, 21 Jul 2022 18:53:12 +0000 (14:53 -0400)] 
rewrite merge, union, intersection to use fr_pair_next() etc.

to avoid pulling the rug out from under the dcursors.

Also correct logic in a few places, and make union check values, too

3 years agoerror if the VP to add is already in a list
Alan T. DeKok [Thu, 21 Jul 2022 18:27:05 +0000 (14:27 -0400)] 
error if the VP to add is already in a list

and remove "b" from the old list before adding it to the new one

3 years agomore debugging functions
Alan T. DeKok [Thu, 21 Jul 2022 14:07:07 +0000 (10:07 -0400)] 
more debugging functions

3 years agoreplace equal pairs on merge RHS
Alan T. DeKok [Thu, 21 Jul 2022 13:46:44 +0000 (09:46 -0400)] 
replace equal pairs on merge RHS

3 years agoadd and use fr_list_assignment_op
Alan T. DeKok [Thu, 21 Jul 2022 12:52:13 +0000 (08:52 -0400)] 
add and use fr_list_assignment_op

3 years agoCheck strrchr() return in link_fixup() (CID #1504305) (#4627)
James Jones [Sat, 23 Jul 2022 11:48:31 +0000 (06:48 -0500)] 
Check strrchr() return in link_fixup() (CID #1504305) (#4627)

3 years agoDon't check a value we know isn't NULL (CID #1503909) (#4618)
James Jones [Sat, 23 Jul 2022 11:48:00 +0000 (06:48 -0500)] 
Don't check a value we know isn't NULL (CID #1503909) (#4618)

inst->filename will not be NULL. The check for that (after it's
already been used in open()) makes coverity complain, so we should
have the courage of our convictions.

3 years agoPlacate coverity re fixed size destination libpath (CID #720444) (#4625)
James Jones [Sat, 23 Jul 2022 11:47:41 +0000 (06:47 -0500)] 
Placate coverity re fixed size destination libpath (CID #720444) (#4625)

libpath has size PATH_MAX, so program should fit.

3 years agoCorrect error check on fr_base16_decode() for octets (CID #1503992) (#4623)
James Jones [Sat, 23 Jul 2022 11:47:23 +0000 (06:47 -0500)] 
Correct error check on fr_base16_decode() for octets (CID #1503992) (#4623)

network_max_size() returns ~0 for octets, which when stored in ret,
a ssize_t, becomes -1. (Presumably this reflects that its max length
can vary.) Thus it makes no sense for it to appear in the test of
fr_base16_decode()'s return value.

3 years agoCheck curl_mime_filedata() return value (CID #1503934) (#4597)
James Jones [Sat, 23 Jul 2022 11:46:21 +0000 (06:46 -0500)] 
Check curl_mime_filedata() return value (CID #1503934) (#4597)

3 years agoAnnotate uses of read preq pointers in test_demux() (CID #1469174) (#4614)
James Jones [Sat, 23 Jul 2022 11:46:04 +0000 (06:46 -0500)] 
Annotate uses of read preq pointers in test_demux() (CID #1469174) (#4614)

Trunk tests are written so that the data sent for mux/demux are
test_proto_request_t * values, which coverity considers tainted.

3 years agoDon't do EV_SET for fr_event_fd_noop (#4626)
Max Khon [Sat, 23 Jul 2022 11:45:32 +0000 (14:45 +0300)] 
Don't do EV_SET for fr_event_fd_noop (#4626)

3 years agoclarify docs
Alan T. DeKok [Thu, 21 Jul 2022 00:02:27 +0000 (20:02 -0400)] 
clarify docs

3 years ago"no value for assignment" is possible
Alan T. DeKok [Thu, 21 Jul 2022 00:00:27 +0000 (20:00 -0400)] 
"no value for assignment" is possible

and needs to be treated as a separate result.

3 years agoresolve all children, not just the first one
Alan T. DeKok [Wed, 20 Jul 2022 23:56:58 +0000 (19:56 -0400)] 
resolve all children, not just the first one

3 years agojust resolve any unresolved tmpls
Alan T. DeKok [Wed, 20 Jul 2022 23:55:42 +0000 (19:55 -0400)] 
just resolve any unresolved tmpls

all of the code paths were the same, and the bare unresolved
data tmpls weren't resolved.

3 years agoremove "update" from conf files
Alan T. DeKok [Wed, 20 Jul 2022 23:14:45 +0000 (19:14 -0400)] 
remove "update" from conf files

3 years agoreset to dict_def if we're at the root of internal
Alan T. DeKok [Wed, 20 Jul 2022 20:09:15 +0000 (16:09 -0400)] 
reset to dict_def if we're at the root of internal

which lets us do &request.Reply-Message, where normally "reply"
is in the internal dictionary.  But we want "Reply-Message" to
be in the RADIUS dictionary.

3 years agoget the correct request, too
Alan T. DeKok [Wed, 20 Jul 2022 20:09:02 +0000 (16:09 -0400)] 
get the correct request, too

3 years agodon't call tmpl_list when list_as_attr is set
Alan T. DeKok [Wed, 20 Jul 2022 19:51:31 +0000 (15:51 -0400)] 
don't call tmpl_list when list_as_attr is set

3 years agoshut up static analyzer
Alan T. DeKok [Wed, 20 Jul 2022 18:42:29 +0000 (14:42 -0400)] 
shut up static analyzer

3 years agotests for nested edit groups
Alan T. DeKok [Wed, 20 Jul 2022 18:41:38 +0000 (14:41 -0400)] 
tests for nested edit groups

3 years agoalmost final cleanups
Alan T. DeKok [Wed, 20 Jul 2022 18:28:45 +0000 (14:28 -0400)] 
almost final cleanups

3 years agouse xlat_debug_attr_list
Alan T. DeKok [Wed, 20 Jul 2022 18:28:32 +0000 (14:28 -0400)] 
use xlat_debug_attr_list

3 years agoexport functions to debug attrs and lists
Alan T. DeKok [Wed, 20 Jul 2022 18:25:47 +0000 (14:25 -0400)] 
export functions to debug attrs and lists

3 years agosupport list_as_attr in tmpl_get_list()
Alan T. DeKok [Wed, 20 Jul 2022 17:05:20 +0000 (13:05 -0400)] 
support list_as_attr in tmpl_get_list()

3 years agoshut up clang scan
Alan T. DeKok [Wed, 20 Jul 2022 16:52:02 +0000 (12:52 -0400)] 
shut up clang scan

3 years agotypo
Alan T. DeKok [Wed, 20 Jul 2022 15:44:13 +0000 (11:44 -0400)] 
typo

3 years agomore rough-in for getting child lists to work in edit sections
Alan T. DeKok [Wed, 20 Jul 2022 15:00:57 +0000 (11:00 -0400)] 
more rough-in for getting child lists to work in edit sections

we need some changes / additions to the dcursor API in order
for this to be finalized.

3 years agoAdd missing MEM() guards to fr_value_box_alloc_null() calls (#4619)
James Jones [Wed, 20 Jul 2022 15:34:09 +0000 (10:34 -0500)] 
Add missing MEM() guards to fr_value_box_alloc_null() calls (#4619)

One, in debug_attr_vp(), will silence CID #1507353. The
other is not associated with a coveriy issue, but should
be there. With this change, all fr_value_box_alloc_null()
call returns will either be checked by MEM() or have an
explicit check in the code.

3 years agomanually unwind indentation on cancel. Fixes #4622
Alan T. DeKok [Wed, 20 Jul 2022 14:36:14 +0000 (10:36 -0400)] 
manually unwind indentation on cancel.  Fixes #4622

3 years agocomments and docs
Alan T. DeKok [Wed, 20 Jul 2022 13:45:52 +0000 (09:45 -0400)] 
comments and docs

3 years agoseparate out leaf / structural edit apply
Alan T. DeKok [Tue, 19 Jul 2022 14:21:24 +0000 (10:21 -0400)] 
separate out leaf / structural edit apply

3 years agoadded fr_pair_list_steal()
Alan T. DeKok [Mon, 18 Jul 2022 22:37:20 +0000 (18:37 -0400)] 
added fr_pair_list_steal()

3 years agodon't print RHS when it's a list
Alan T. DeKok [Mon, 18 Jul 2022 18:40:29 +0000 (14:40 -0400)] 
don't print RHS when it's a list

this has to be updated later to do the Right Thing

3 years agomore leak suppressions for recent OSX
Alan T. DeKok [Mon, 18 Jul 2022 22:28:39 +0000 (18:28 -0400)] 
more leak suppressions for recent OSX

3 years agostart of parent / child relationships for nested edit sections
Alan T. DeKok [Mon, 18 Jul 2022 16:30:57 +0000 (12:30 -0400)] 
start of parent / child relationships for nested edit sections

3 years agodo less copying when editing lists
Alan T. DeKok [Mon, 18 Jul 2022 15:45:00 +0000 (11:45 -0400)] 
do less copying when editing lists

3 years agomove edit state to sub-structure
Alan T. DeKok [Mon, 18 Jul 2022 14:50:25 +0000 (10:50 -0400)] 
move edit state to sub-structure

in preparation for allowing nested lists

3 years agoallow TMPL_TYPE_DATA on RHS of map
Alan T. DeKok [Mon, 18 Jul 2022 14:20:45 +0000 (10:20 -0400)] 
allow TMPL_TYPE_DATA on RHS of map

3 years agoConstrain rcodes mapped to eap codes (CID #1503933) (#4620)
James Jones [Tue, 19 Jul 2022 12:37:59 +0000 (07:37 -0500)] 
Constrain rcodes mapped to eap codes (CID #1503933) (#4620)

Coverity notices that there are rlm_rcode_t values that
exceed the bounds on rcode_to_eap_code[].

3 years agoxlat_func_subst: do not add an additional self-reference (#4621)
Max Khon [Tue, 19 Jul 2022 12:19:12 +0000 (15:19 +0300)] 
xlat_func_subst: do not add an additional self-reference (#4621)

Fixes the following talloc error when %(subst) is used:

ERROR: talloc_free with references at src/lib/util/value.c:3425

        reference at src/lib/util/value.c:3982

3 years agoSecond fix on changing /etc/apt/sources.list
Nick Porter [Mon, 18 Jul 2022 10:27:17 +0000 (11:27 +0100)] 
Second fix on changing /etc/apt/sources.list

3 years agoprint nested pairs, too
Alan T. DeKok [Sun, 17 Jul 2022 14:21:09 +0000 (10:21 -0400)] 
print nested pairs, too

3 years agoallow edits of structural attributes.
Alan T. DeKok [Sun, 17 Jul 2022 14:10:14 +0000 (10:10 -0400)] 
allow edits of structural attributes.

this should work, as the underlying infrastructure now supports it.

3 years agodon't record NOOPs
Alan T. DeKok [Sun, 17 Jul 2022 14:08:27 +0000 (10:08 -0400)] 
don't record NOOPs

3 years agowe now have head->flags, so just use that
Alan T. DeKok [Sun, 17 Jul 2022 12:51:39 +0000 (08:51 -0400)] 
we now have head->flags, so just use that

3 years agoadd %{paircmp:LDAP-Group foo} API and tests
Alan T. DeKok [Fri, 15 Jul 2022 20:24:05 +0000 (16:24 -0400)] 
add %{paircmp:LDAP-Group foo} API and tests

so we can hack up "&LDAP-Group == 'foo'" in the short term

3 years agorearrange code
Alan T. DeKok [Fri, 15 Jul 2022 20:23:49 +0000 (16:23 -0400)] 
rearrange code

3 years agohoist common code to common function
Alan T. DeKok [Fri, 15 Jul 2022 15:50:04 +0000 (11:50 -0400)] 
hoist common code to common function

in preparation for doing paircmp() in the new xlat framework

3 years agoAnnotate strcpy() in make_vlog; log_keyword is always short (CID #1503899) (#4615)
James Jones [Fri, 15 Jul 2022 14:08:49 +0000 (09:08 -0500)] 
Annotate strcpy() in make_vlog; log_keyword is always short (CID #1503899) (#4615)

All calls to make_vlog are done via macros that pass one of
"error", "warning", or "info" as log_keyword, all much shorter
than the 256-byte buffer that accumulates the log entry.

3 years agoKeep attr_protocol_encapsulation specific to one gctx
Alan T. DeKok [Fri, 15 Jul 2022 00:11:26 +0000 (20:11 -0400)] 
Keep attr_protocol_encapsulation specific to one gctx

3 years agohoist static analysis checks to before when they're used
Alan T. DeKok [Thu, 14 Jul 2022 23:58:39 +0000 (19:58 -0400)] 
hoist static analysis checks to before when they're used

3 years agounify resolution of FUNC_UNRESOLVED and FUNC
Alan T. DeKok [Thu, 14 Jul 2022 13:48:50 +0000 (09:48 -0400)] 
unify resolution of FUNC_UNRESOLVED and FUNC

by turning FUNC_UNRESOLVED into FUNC, and then just falling
through and using the normal FUNC resolution process.

3 years agoset more flags correctly
Alan T. DeKok [Wed, 13 Jul 2022 20:13:24 +0000 (16:13 -0400)] 
set more flags correctly

3 years agomore asserts for sanity checks on needs_resolving
Alan T. DeKok [Wed, 13 Jul 2022 19:57:22 +0000 (15:57 -0400)] 
more asserts for sanity checks on needs_resolving

3 years agofree conditions and children of "if" sections which were skipped
Alan T. DeKok [Tue, 12 Jul 2022 21:03:38 +0000 (17:03 -0400)] 
free conditions and children of "if" sections which were skipped

and ensure that cf_section_free_children() doesn't free CONF_DATA,
as that's still needed.

3 years agodon't merge flags quite as yet
Alan T. DeKok [Wed, 13 Jul 2022 15:20:06 +0000 (11:20 -0400)] 
don't merge flags quite as yet

the node may be re-written.  We only merge flags when we're adding
the node to a function argument list

3 years agoregex now loops over input
Alan T. DeKok [Tue, 12 Jul 2022 18:48:42 +0000 (14:48 -0400)] 
regex now loops over input

3 years agouse fr_value_calc_list_cmp() for comparison operators
Alan T. DeKok [Mon, 11 Jul 2022 20:44:27 +0000 (16:44 -0400)] 
use fr_value_calc_list_cmp() for comparison operators

3 years agoadd fr_value_calc_list_cmp()
Alan T. DeKok [Mon, 11 Jul 2022 20:43:45 +0000 (16:43 -0400)] 
add fr_value_calc_list_cmp()

which is O(N^2), and implements v3 functionality.

We arguably need a real list comparison, which checks each member
for equality

3 years agoUniform way of dealing with static analysis (#4613)
James Jones [Thu, 14 Jul 2022 13:32:32 +0000 (08:32 -0500)] 
Uniform way of dealing with static analysis (#4613)

Static analysis doesn't necessarily infer all properties of code
and thus may give false positives. Since we use at least two static
analyzers, clang's and coverity, we define STATIC_ANALYZER if and
only if some static analysis is running, and check it instead of
a macro specific to a particular static analyzer. It's defined,
or not, in src/include/build.h, so that adding a new static
analyzer only requires adding code, not changing it.

3 years agoDebian sid docker image no-longer has /etc/apt/sources.list
Nick Porter [Thu, 14 Jul 2022 08:21:09 +0000 (09:21 +0100)] 
Debian sid docker image no-longer has /etc/apt/sources.list

3 years agoUse a child vp when encoding children of a group
Nick Porter [Wed, 13 Jul 2022 15:10:20 +0000 (16:10 +0100)] 
Use a child vp when encoding children of a group

3 years agoAdd VS code intellisense configuration
Nick Porter [Wed, 13 Jul 2022 09:14:13 +0000 (10:14 +0100)] 
Add VS code intellisense configuration

3 years agoremove unnecessary calls to fr_dcursor_current()
Alan T. DeKok [Mon, 11 Jul 2022 15:52:44 +0000 (11:52 -0400)] 
remove unnecessary calls to fr_dcursor_current()

3 years agodon't create value-boxes with NULL ptrs for 'octets'
Alan T. DeKok [Mon, 11 Jul 2022 15:44:23 +0000 (11:44 -0400)] 
don't create value-boxes with NULL ptrs for 'octets'

3 years agosimplify checks
Alan T. DeKok [Mon, 11 Jul 2022 15:29:44 +0000 (11:29 -0400)] 
simplify checks

3 years agoprint out which function has issues
Alan T. DeKok [Mon, 11 Jul 2022 15:29:18 +0000 (11:29 -0400)] 
print out which function has issues

3 years agofix bug and add test for logical ||
Alan T. DeKok [Mon, 11 Jul 2022 12:54:53 +0000 (08:54 -0400)] 
fix bug and add test for logical ||

  (&Framed-IP-Address || &Packet-Src-IP-Address) == (ipaddr) 127.0.0.1

should work when one of the attributes doesn't exist

3 years agomore docs
Alan T. DeKok [Mon, 11 Jul 2022 12:11:27 +0000 (08:11 -0400)] 
more docs

3 years agoshut up clang scan
Alan T. DeKok [Sun, 10 Jul 2022 19:35:36 +0000 (15:35 -0400)] 
shut up clang scan

3 years agodon't free vp before using it
Alan T. DeKok [Sun, 10 Jul 2022 13:12:36 +0000 (09:12 -0400)] 
don't free vp before using it

3 years agoauto-remove the auto-added references
Alan T. DeKok [Fri, 8 Jul 2022 20:10:56 +0000 (16:10 -0400)] 
auto-remove the auto-added references

3 years agoFix when filename starts with a directory separator (is an absolute path). (#4601)
Max Khon [Sat, 9 Jul 2022 08:24:17 +0000 (11:24 +0300)] 
Fix when filename starts with a directory separator (is an absolute path). (#4601)

3 years agoFix UNIT_TEST_KEYWORD_ARGS when BUILD_DIR is an absolute path name (#4602)
Max Khon [Sat, 9 Jul 2022 00:38:22 +0000 (03:38 +0300)] 
Fix UNIT_TEST_KEYWORD_ARGS when BUILD_DIR is an absolute path name (#4602)

* Fix UNIT_TEST_KEYWORD_ARGS when BUILD_DIR is an absolute path name

* Fix the following error when eapol_test test fails:

/bin/sh: line 8: ": command not found

* Fix map, modules and radclient tests when BUILD_DIR is an absolute path name

3 years agoannotation typo (CID #1504436) (#4596)
James Jones [Sat, 9 Jul 2022 00:37:00 +0000 (19:37 -0500)] 
annotation typo (CID #1504436) (#4596)

3 years agoAnnotate false positive in _raddict_report() (CID #1505146) (#4588)
James Jones [Sat, 9 Jul 2022 00:34:10 +0000 (19:34 -0500)] 
Annotate false positive in _raddict_report() (CID #1505146) (#4588)

coverity doesn't know that if children == NULL, len will be
zero, so children won't be dereferenced.

3 years agoAnnotate false positive sizeof mismatch (CID #1504018) (#4599)
James Jones [Sat, 9 Jul 2022 00:33:42 +0000 (19:33 -0500)] 
Annotate false positive sizeof mismatch (CID #1504018) (#4599)

3 years agoCheck tmpl_find_vp() return value (CID #1503995) (#4600)
James Jones [Sat, 9 Jul 2022 00:33:01 +0000 (19:33 -0500)] 
Check tmpl_find_vp() return value (CID #1503995) (#4600)

Now that tmpl_find_vp() returns -2 as advertised, we can check
the return value rather than checking vp, placating coverity.

3 years agoAccomodate coverity in tls_cache_session_ticket_app_data_get() (CID #1503904) (#4604)
James Jones [Sat, 9 Jul 2022 00:31:06 +0000 (19:31 -0500)] 
Accomodate coverity in tls_cache_session_ticket_app_data_get() (CID #1503904) (#4604)

Make the default appear for coverity as well as for clang static
analysis, for the same reason: otherwise, an unexpected status
could pass a NULL request to tls_cache_app_data_get().

3 years agoAnnotate false positive on curl_escape call (CID #1503903) (#4605)
James Jones [Sat, 9 Jul 2022 00:30:28 +0000 (19:30 -0500)] 
Annotate false positive on curl_escape call (CID #1503903) (#4605)

The NUL terminator isn't counted in the length parameter of
curl_escape():
1. You can pass 0 and curl_escape() will itself use strlen().
2. The example code from "man curl_escape" gives a length
   that doesn't include the NUL terminator.

We therefore annotate the call to placate coverity.

3 years agotests for %{string:} with other data types
Alan T. DeKok [Fri, 8 Jul 2022 15:11:23 +0000 (11:11 -0400)] 
tests for %{string:} with other data types

3 years agoupdate documentation on string escaping, etc.
Alan T. DeKok [Fri, 8 Jul 2022 15:07:43 +0000 (11:07 -0400)] 
update documentation on string escaping, etc.

3 years agoremoved duplicate page, and merged content
Alan T. DeKok [Fri, 8 Jul 2022 15:00:21 +0000 (11:00 -0400)] 
removed duplicate page, and merged content