libyang.so: 4.2.2 to 5.0.0 compatibility report
Description: API/ABI compatibility report for the libyang.so object between 4.2.2 and 5.0.0 versions
Keywords: libyang.so, compatibility, API, ABI, report

# API compatibility report for the libyang.so object between 4.2.2 and 5.0.0 versions on x86_64

Binary
Compatibility Source
Compatibility

## Test Info

Module Name | libyang.so
Version #1 | 4.2.2
Version #2 | 5.0.0
Arch | x86_64
GCC Version | 15.2.1
Subject | Binary Compatibility

## Test Results

Total Header Files | 18
Total Source Files | 29
Total Objects | 1
Total Symbols / Types | 369 / 194
Compatibility | 74.1%

## Problem Summary

| Severity | Count
--- | --- | ---
Added Symbols | - | 4
Removed Symbols | High | 10
Problems with Data Types | High | 0
Medium | 3
Low | 10
Problems with Symbols | High | 26
Medium | 6
Low | 7
Problems with Constants | Low | 0

## Added Symbols 4

log.h, libyang.so.5.0.0
ly_temp_log_clb ( ly_log_clb clb )
parser_data.h, libyang.so.5.0.0
lyd_parse_value_fragment ( struct ly_ctx const* ctx, char const* path, struct ly_in* in, enum LYD_FORMAT format, uint32_t new_val_options, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
tree_data.h, libyang.so.5.0.0
ly_pattern_free ( void* pat_comp )
tree_schema.h, libyang.so.5.0.0
lys_find_module ( struct ly_ctx const* ctx, struct lysc_node const* ctx_node, char const* prefix, uint32_t prefix_len, enum LY_VALUE_FORMAT format, void const* prefix_data )
to the top

## Removed Symbols 10

parser_data.h, libyang.so.4.2.2
lyd_parse_ext_data ( struct lysc_ext_instance const* ext, struct lyd_node* parent, struct ly_in* in, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
lyd_parse_ext_op ( struct lysc_ext_instance const* ext, struct lyd_node* parent, struct ly_in* in, enum LYD_FORMAT format, enum lyd_type data_type, uint32_t parse_options, struct lyd_node** tree, struct lyd_node** op )
plugins_exts.h, libyang.so.4.2.2
lyplg_ext_insert ( struct lyd_node* parent, struct lyd_node* first )
plugins_types.h, libyang.so.4.2.2
lyplg_type_identity_module ( struct ly_ctx const* ctx, struct lysc_node const* ctx_node, char const* prefix, uint32_t prefix_len, enum LY_VALUE_FORMAT format, void const* prefix_data )
tree_data.h, libyang.so.4.2.2
lyd_new_ext_any ( struct lysc_ext_instance const* ext, char const* name, void const* value, enum LYD_ANYDATA_VALUETYPE value_type, uint32_t options, struct lyd_node** node )
lyd_new_ext_inner ( struct lysc_ext_instance const* ext, char const* name, struct lyd_node** node )
lyd_new_ext_list ( struct lysc_ext_instance const* ext, char const* name, uint32_t options, struct lyd_node** node, ... )
lyd_new_ext_path ( struct lyd_node* parent, struct lysc_ext_instance const* ext, char const* path, char const* value, uint32_t options, struct lyd_node** node )
lyd_new_ext_term ( struct lysc_ext_instance const* ext, char const* name, void const* value, uint32_t value_size_bits, uint32_t options, struct lyd_node** node )
tree_schema.h, libyang.so.4.2.2
lys_getnext_ext ( struct lysc_node const* last, struct lysc_node const* parent, struct lysc_ext_instance const* ext, uint32_t options )
to the top

## Problems with Symbols, High Severity 26

context.h, libyang.so.4.2.2
[+] ly_ctx_new ( char const* search_dir, uint32_t options, struct ly_ctx** new_ctx ) 1

| Change | Effect
--- | --- | ---
1 | The parameter new_ctx became passed in r14 register instead of r15. | Applications will read the wrong memory block instead of the parameter value.

[+] ly_ctx_unset_searchdir ( struct ly_ctx* ctx, char const* value ) 2

| Change | Effect
--- | --- | ---
1 | The parameter ctx became passed in rbx register instead of rbp. | Applications will read the wrong memory block instead of the parameter value.
2 | The parameter value became passed in rbp register instead of r13. | Applications will read the wrong memory block instead of the parameter value.

parser_data.h, libyang.so.4.2.2
[+] lyd_parse_data ( struct ly_ctx const* ctx, struct lyd_node* parent, struct ly_in* in, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree ) 1

| Change | Effect
--- | --- | ---
1 | The parameter in became passed in rax register instead of rdx. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_validate_ext ( struct lyd_node** ext_tree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node const* dep_tree, struct lyd_node** diff ) 1
⇣
lyd_validate_ext ( struct lyd_node** subtree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node** diff )

| Change | Effect
--- | --- | ---
1 | 4th middle parameter dep_tree has been removed from the calling stack. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.

[+] lyd_validate_op ( struct lyd_node* op_tree, struct lyd_node const* dep_tree, enum lyd_type data_type, struct lyd_node** diff ) 1

| Change | Effect
--- | --- | ---
1 | The parameter op_tree became passed in r13 register instead of r12. | Applications will read the wrong memory block instead of the parameter value.

plugins_types.h, libyang.so.4.2.2
[+] lyplg_type_lypath_new ( struct ly_ctx const* ctx, char const* value, uint32_t value_len, uint32_t options, enum LY_VALUE_FORMAT format, void* prefix_data, struct lysc_node const* ctx_node, struct lysc_ext_instance const* top_ext, struct lys_glob_unres* unres, struct ly_path** path, struct ly_err_item** err ) 1
⇣
lyplg_type_lypath_new ( struct ly_ctx const* ctx, char const* value, uint32_t value_len, uint32_t options, enum LY_VALUE_FORMAT format, void* prefix_data, struct lysc_node const* ctx_node, struct lys_glob_unres* unres, struct ly_path** path, struct ly_err_item** err )

| Change | Effect
--- | --- | ---
1 | 8th middle parameter top_ext has been removed from the calling stack. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.

[+] lyplg_type_resolve_leafref ( struct lysc_type_leafref const* lref, struct lyd_node const* node, struct lyd_value* value, struct lyd_node const* tree, struct lysc_ext_instance const* top_ext, struct ly_set** targets, char** errmsg ) 1
⇣
lyplg_type_resolve_leafref ( struct lysc_type_leafref const* lref, struct lyd_node const* node, struct lyd_value* value, struct lyd_node const* tree, struct ly_set** targets, char** errmsg )

| Change | Effect
--- | --- | ---
1 | 5th middle parameter top_ext has been removed from the calling stack. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.

[+] lyplg_type_store_string ( struct ly_ctx const* ctx, struct lysc_type const* type, void const* value, uint32_t value_size_bits, uint32_t options, enum LY_VALUE_FORMAT format, void* UNUSED_prefix_data, uint32_t hints, struct lysc_node const* UNUSED_ctx_node, struct lysc_ext_instance const* UNUSED_top_ext, struct lyd_value* storage, struct lys_glob_unres* UNUSED_unres, struct ly_err_item** err ) 1
⇣
lyplg_type_store_string ( struct ly_ctx const* ctx, struct lysc_type const* type, void const* value, uint32_t value_size_bits, uint32_t options, enum LY_VALUE_FORMAT format, void* UNUSED_prefix_data, uint32_t hints, struct lysc_node const* UNUSED_ctx_node, struct lyd_value* storage, struct lys_glob_unres* UNUSED_unres, struct ly_err_item** err )

| Change | Effect
--- | --- | ---
1 | 10th middle parameter UNUSED_top_ext has been removed from the calling stack. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.

tree_data.h, libyang.so.4.2.2
[+] ly_pattern_match ( struct ly_ctx const* ctx, char const* pattern, char const* string, uint32_t str_len, pcre2_code_8** pcode ) 2

| Change | Effect
--- | --- | ---
1 | The parameter str_len became passed in rbp register instead of r14. | Applications will read the wrong memory block instead of the parameter value.
2 | The parameter string became passed in r13 register instead of r12. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_any_value_str ( struct lyd_node const* any, char** value_str ) 1

| Change | Effect
--- | --- | ---
1 | The parameter value_str became passed in rbp register instead of rsi. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_find_sibling_val ( struct lyd_node const* siblings, struct lysc_node const* schema, char const* key_or_value, uint32_t val_len, struct lyd_node** match ) 1

| Change | Effect
--- | --- | ---
1 | The parameter val_len became passed in rcx register instead of r14. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_insert_child ( struct lyd_node* parent, struct lyd_node* node ) 1

| Change | Effect
--- | --- | ---
1 | The parameter parent became passed in rbp register instead of r12. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_new_any ( struct lyd_node* parent, struct lys_module const* module, char const* name, void const* value, enum LYD_ANYDATA_VALUETYPE value_type, uint32_t options, struct lyd_node** node ) 1

| Change | Effect
--- | --- | ---
1 | The parameter module became passed in rbp register instead of r12. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_new_list2 ( struct lyd_node* parent, struct lys_module const* module, char const* name, char const* keys, uint32_t options, struct lyd_node** node ) 2

| Change | Effect
--- | --- | ---
1 | The parameter keys became passed in rbp register instead of r13. | Applications will read the wrong memory block instead of the parameter value.
2 | The parameter module became passed in rax register instead of r12. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_new_list3 ( struct lyd_node* parent, struct lys_module const* module, char const* name, void const** key_values, uint32_t* value_sizes_bits, uint32_t options, struct lyd_node** node ) 1

| Change | Effect
--- | --- | ---
1 | The parameter parent became passed in r12 register instead of r13. | Applications will read the wrong memory block instead of the parameter value.

[+] lyd_new_path ( struct lyd_node* parent, struct ly_ctx const* ctx, char const* path, char const* value, uint32_t options, struct lyd_node** node ) 2

| Change | Effect
--- | --- | ---
1 | The parameter node became passed in r9 register instead of r15. | Applications will read the wrong memory block instead of the parameter value.
2 | The parameter options became passed in r13 register instead of r8. | Applications will read the wrong memory block instead of the parameter value.

tree_schema.h, libyang.so.4.2.2
[+] lys_find_child ( struct lysc_node const* parent, struct lys_module const* module, char const* name, size_t name_len, uint16_t nodetype, uint32_t options ) 6
⇣
lys_find_child ( struct ly_ctx const* ctx, struct lysc_node const* parent, struct lys_module const* mod, char const* mod_name, uint32_t mod_len, char const* name, uint32_t name_len, uint32_t options )

| Change | Effect
--- | --- | ---
1 | Parameter ctx of type struct ly_ctx const* has been added to the calling stack at the middle position. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2 | Parameter mod of type struct lys_module const* has been added to the calling stack at the middle position. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
3 | Parameter mod_name of type char const* has been added to the calling stack at the middle position. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
4 | Parameter mod_len of type uint32_t has been added to the calling stack at the middle position. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
5 | 2nd middle parameter module has been removed from the calling stack. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
6 | 5th middle parameter nodetype has been removed from the calling stack. | Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.

to the top

## Problems with Data Types, Medium Severity 3

plugins_exts.h
[+] struct lyplg_ext 1

| Change | Effect
--- | --- | ---
1 | Field snode_xpath has been added at the middle position of this structural type. | 1) Size of the inclusive type has been changed. 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.

[+] affected symbols: 2 (0.5%)
lyplg_add_extension_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_ext_record const* recs )
Field 'recs.plugin' in 3rd parameter 'recs' (pointer) is of type 'struct lyplg_ext'.
lysc_get_ext_plugin ( uintptr_t plugin_ref )
Return value (pointer) has base type 'struct lyplg_ext'.
[+] struct lyplg_ext_record 1

| Change | Effect
--- | --- | ---
1 | Size of field plugin has been changed from 104 bytes to 112 bytes. | 1) Size of the inclusive type has been changed. 2) Previous accesses of applications and library functions to this field may be broken.

[+] affected symbols: 1 (0.3%)
lyplg_add_extension_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_ext_record const* recs )
3rd parameter 'recs' (pointer) has base type 'struct lyplg_ext_record'.
tree_data.h
[+] struct lyd_value_union 1

| Change | Effect
--- | --- | ---
1 | Field top_ext has been removed from this type. | 1) Applications will access incorrect memory when attempting to access this field. 2) Size of the inclusive type has been changed.

[+] affected symbols: 147 (39.8%)
ly_ctx_get_yanglib_data ( struct ly_ctx const* ctx, struct lyd_node** root_p, char const* content_id_format, ... )
Field 'root_p.meta.value.unnamed0.subvalue' in 2nd parameter 'root_p' (pointer) has base type 'struct lyd_value_union'.
ly_ctx_new_yldata ( char const* search_dir, struct lyd_node const* tree, int options, struct ly_ctx** ctx )
Field 'tree.meta.value.unnamed0.subvalue' in 2nd parameter 'tree' (pointer) has base type 'struct lyd_value_union'.
ly_ctx_set_ext_data_clb ( struct ly_ctx const* ctx, ly_ext_data_clb clb, void* user_data )
Field 'clb.p1.prev.meta.value.unnamed0.subvalue' in 2nd parameter 'clb' has base type 'struct lyd_value_union'.
ly_set_add ( struct ly_set* set, void const* object, ly_bool list, uint32_t* index_p )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_clean ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_contains ( struct ly_set const* set, void const* object, uint32_t* index_p )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_dup ( struct ly_set const* set, void*(*duplicator)(void const*), struct ly_set** newset_p )
Field 'newset_p.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 3rd parameter 'newset_p' (pointer) has base type 'struct lyd_value_union'.
ly_set_erase ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_free ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_merge ( struct ly_set* trg, struct ly_set const* src, ly_bool list, void*(*duplicator)(void const*) )
Field 'src.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 2nd parameter 'src' (pointer) has base type 'struct lyd_value_union'.
...
to the top

## Problems with Symbols, Medium Severity 6

log.h, libyang.so.4.2.2
[+] ly_err_print ( struct ly_ctx const* ctx, struct ly_err_item const* eitem ) 2
⇣
ly_err_print ( struct ly_ctx const* ctx, struct ly_err_item const* eitem, struct lyd_node const* lnode, struct lysc_node const* snode )

| Change | Effect
--- | --- | ---
1 | Parameter lnode of type struct lyd_node const* has been added to the calling stack. | This parameter will not be initialized by old clients.
2 | Parameter snode of type struct lysc_node const* has been added to the calling stack. | This parameter will not be initialized by old clients.

tree_data.h, libyang.so.4.2.2
[+] lyd_dup_siblings ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_siblings ( struct lyd_node const* node, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of 2nd parameter parent has been changed from struct lyd_node_inner (72 bytes) to struct lyd_node (56 bytes). | This parameter may be incorrectly initialized by applications.

[+] lyd_dup_siblings_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_siblings_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of 3rd parameter parent has been changed from struct lyd_node_inner (72 bytes) to struct lyd_node (56 bytes). | This parameter may be incorrectly initialized by applications.

[+] lyd_dup_single ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_single ( struct lyd_node const* node, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of 2nd parameter parent has been changed from struct lyd_node_inner (72 bytes) to struct lyd_node (56 bytes). | This parameter may be incorrectly initialized by applications.

[+] lyd_dup_single_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_single_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of 3rd parameter parent has been changed from struct lyd_node_inner (72 bytes) to struct lyd_node (56 bytes). | This parameter may be incorrectly initialized by applications.

to the top

## Problems with Data Types, Low Severity 10

plugins_exts.h
[+] struct lyplg_ext 2

| Change | Effect
--- | --- | ---
1 | Size of this type has been changed from 104 bytes to 112 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
2 | Type of field node_xpath has been changed from lyplg_ext_data_node_xpath_clb to lyplg_ext_node_xpath_clb. | Replacement of the field data type may indicate a change in the semantic meaning of the field.

[+] affected symbols: 2 (0.5%)
lyplg_add_extension_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_ext_record const* recs )
Field 'recs.plugin' in 3rd parameter 'recs' (pointer) is of type 'struct lyplg_ext'.
lysc_get_ext_plugin ( uintptr_t plugin_ref )
Return value (pointer) has base type 'struct lyplg_ext'.
[+] struct lyplg_ext_record 1

| Change | Effect
--- | --- | ---
1 | Size of this type has been changed from 128 bytes to 136 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.

[+] affected symbols: 1 (0.3%)
lyplg_add_extension_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_ext_record const* recs )
3rd parameter 'recs' (pointer) has base type 'struct lyplg_ext_record'.
[+] typedef lyplg_ext_data_snode_clb 1

| Change | Effect
--- | --- | ---
1 | Base type has been changed from LY_ERR(*)(struct lysc_ext_instance*, struct lyd_node const*, struct lysc_node const*, char const*, uint32_t, LY_VALUE_FORMAT, void*, char const*, uint32_t, ly_bool, struct lysc_node const**) to LY_ERR(*)(struct lysc_ext_instance*, struct lyd_node const*, struct lysc_node const*, char const*, uint32_t, LY_VALUE_FORMAT, void*, char const*, uint32_t, struct lysc_node const**). | Replacement of the base data type may indicate a change in its semantic meaning.

[+] affected symbols: 2 (0.5%)
lyplg_add_extension_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_ext_record const* recs )
Field 'recs.plugin.snode' in 3rd parameter 'recs' (pointer) is of type 'lyplg_ext_data_snode_clb'.
lysc_get_ext_plugin ( uintptr_t plugin_ref )
Field 'retval.snode' in the return value (pointer) is of type 'lyplg_ext_data_snode_clb'.
plugins_types.h
[+] typedef lyplg_type_store_clb 1

| Change | Effect
--- | --- | ---
1 | Base type has been changed from LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, void const*, uint32_t, uint32_t, LY_VALUE_FORMAT, void*, uint32_t, struct lysc_node const*, struct lysc_ext_instance const*, struct lyd_value*, struct lys_glob_unres*, struct ly_err_item**) to LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, void const*, uint32_t, uint32_t, LY_VALUE_FORMAT, void*, uint32_t, struct lysc_node const*, struct lyd_value*, struct lys_glob_unres*, struct ly_err_item**). | Replacement of the base data type may indicate a change in its semantic meaning.

[+] affected symbols: 2 (0.5%)
lyplg_add_type_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_type_record const* recs )
Field 'recs.plugin.store' in 3rd parameter 'recs' (pointer) is of type 'lyplg_type_store_clb'.
lysc_get_type_plugin ( uintptr_t plugin_ref )
Field 'retval.store' in the return value (pointer) is of type 'lyplg_type_store_clb'.
[+] typedef lyplg_type_validate_tree_clb 1

| Change | Effect
--- | --- | ---
1 | Base type has been changed from LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, struct lyd_node const*, struct lyd_node const*, struct lysc_ext_instance const*, struct lyd_value*, struct ly_err_item**) to LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, struct lyd_node const*, struct lyd_node const*, struct lyd_value*, struct ly_err_item**). | Replacement of the base data type may indicate a change in its semantic meaning.

[+] affected symbols: 2 (0.5%)
lyplg_add_type_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_type_record const* recs )
Field 'recs.plugin.validate_tree' in 3rd parameter 'recs' (pointer) is of type 'lyplg_type_validate_tree_clb'.
lysc_get_type_plugin ( uintptr_t plugin_ref )
Field 'retval.validate_tree' in the return value (pointer) is of type 'lyplg_type_validate_tree_clb'.
tree_data.h
[+] struct anon-struct-tree_data.h-848 1

| Change | Effect
--- | --- | ---
1 | Base type of field parent has been changed from struct lyd_node_inner (72 bytes) to struct lyd_node (56 bytes). | Possible access of applications to incorrect memory through the pointer.

[+] affected symbols: 2 (0.5%)
lyd_leafref_get_links ( struct lyd_node_term const* node, struct lyd_leafref_links_rec const** record )
Field 'node.unnamed0.unnamed0' in 1st parameter 'node' (pointer) is of type 'anon-struct-tree_data.h-848'.
lyd_value_compare ( struct lyd_node_term const* node, char const* value, uint32_t value_len )
Field 'node.unnamed0.unnamed0' in 1st parameter 'node' (pointer) is of type 'anon-struct-tree_data.h-848'.
[+] struct anon-struct-tree_data.h-985 1

| Change | Effect
--- | --- | ---
1 | Base type of field parent has been changed from struct lyd_node_inner (72 bytes) to struct lyd_node (56 bytes). | Possible access of applications to incorrect memory through the pointer.

[+] affected symbols: 5 (1.4%)
lyd_free_attr_siblings ( struct ly_ctx const* ctx, struct lyd_attr* attr )
Field 'attr.parent.unnamed0.unnamed0' in 2nd parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_free_attr_single ( struct ly_ctx const* ctx, struct lyd_attr* attr )
Field 'attr.parent.unnamed0.unnamed0' in 2nd parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_new_attr ( struct lyd_node* parent, char const* module_name, char const* name, char const* value, struct lyd_attr** attr )
Field 'attr.parent.unnamed0.unnamed0' in 5th parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_new_attr2 ( struct lyd_node* parent, char const* module_ns, char const* name, char const* value, struct lyd_attr** attr )
Field 'attr.parent.unnamed0.unnamed0' in 5th parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_new_meta2 ( struct ly_ctx const* ctx, struct lyd_node* parent, uint32_t options, struct lyd_attr const* attr, struct lyd_meta** meta )
Field 'attr.next.parent.unnamed0.unnamed0' in 4th parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
[+] struct lyd_node 1

| Change | Effect
--- | --- | ---
1 | Base type of field parent has been changed from struct lyd_node_inner (72 bytes) to struct lyd_node (56 bytes). | Possible access of applications to incorrect memory through the pointer.

[+] affected symbols: 131 (35.5%)
ly_ctx_get_yanglib_data ( struct ly_ctx const* ctx, struct lyd_node** root_p, char const* content_id_format, ... )
2nd parameter 'root_p' (pointer) has base type 'struct lyd_node'.
ly_ctx_new_yldata ( char const* search_dir, struct lyd_node const* tree, int options, struct ly_ctx** ctx )
Field 'tree.next' in 2nd parameter 'tree' (pointer) has base type 'struct lyd_node'.
ly_ctx_set_ext_data_clb ( struct ly_ctx const* ctx, ly_ext_data_clb clb, void* user_data )
Field 'clb.p1' in 2nd parameter 'clb' has base type 'struct lyd_node'.
ly_set_add ( struct ly_set* set, void const* object, ly_bool list, uint32_t* index_p )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_clean ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_contains ( struct ly_set const* set, void const* object, uint32_t* index_p )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_dup ( struct ly_set const* set, void*(*duplicator)(void const*), struct ly_set** newset_p )
Field 'newset_p.unnamed0.dnodes' in 3rd parameter 'newset_p' (pointer) has base type 'struct lyd_node'.
ly_set_erase ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_free ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_merge ( struct ly_set* trg, struct ly_set const* src, ly_bool list, void*(*duplicator)(void const*) )
Field 'src.unnamed0.dnodes' in 2nd parameter 'src' (pointer) has base type 'struct lyd_node'.
...
[+] struct lyd_value_union 1

| Change | Effect
--- | --- | ---
1 | Size of this type has been changed from 88 bytes to 80 bytes. | The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.

[+] affected symbols: 147 (39.8%)
ly_ctx_get_yanglib_data ( struct ly_ctx const* ctx, struct lyd_node** root_p, char const* content_id_format, ... )
Field 'root_p.meta.value.unnamed0.subvalue' in 2nd parameter 'root_p' (pointer) has base type 'struct lyd_value_union'.
ly_ctx_new_yldata ( char const* search_dir, struct lyd_node const* tree, int options, struct ly_ctx** ctx )
Field 'tree.meta.value.unnamed0.subvalue' in 2nd parameter 'tree' (pointer) has base type 'struct lyd_value_union'.
ly_ctx_set_ext_data_clb ( struct ly_ctx const* ctx, ly_ext_data_clb clb, void* user_data )
Field 'clb.p1.meta.value.unnamed0.subvalue' in 2nd parameter 'clb' has base type 'struct lyd_value_union'.
ly_set_add ( struct ly_set* set, void const* object, ly_bool list, uint32_t* index_p )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_clean ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_contains ( struct ly_set const* set, void const* object, uint32_t* index_p )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_dup ( struct ly_set const* set, void*(*duplicator)(void const*), struct ly_set** newset_p )
Field 'newset_p.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 3rd parameter 'newset_p' (pointer) has base type 'struct lyd_value_union'.
ly_set_erase ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_free ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_merge ( struct ly_set* trg, struct ly_set const* src, ly_bool list, void*(*duplicator)(void const*) )
Field 'src.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 2nd parameter 'src' (pointer) has base type 'struct lyd_value_union'.
...
to the top

## Problems with Symbols, Low Severity 7

context.h, libyang.so.4.2.2
[+] ly_ctx_unset_searchdir ( struct ly_ctx* ctx, char const* value ) 1
⇣
ly_ctx_unset_searchdir ( struct ly_ctx* ctx, char const* search_dir )

| Change | Effect
--- | --- | ---
1 | 2nd parameter value has been renamed to search_dir. | Renaming of a parameter may indicate a change in its semantic meaning.

parser_data.h, libyang.so.4.2.2
[+] lyd_validate_ext ( struct lyd_node** ext_tree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node const* dep_tree, struct lyd_node** diff ) 1
⇣
lyd_validate_ext ( struct lyd_node** subtree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node** diff )

| Change | Effect
--- | --- | ---
1 | 1st parameter ext_tree has been renamed to subtree. | Renaming of a parameter may indicate a change in its semantic meaning.

tree_data.h, libyang.so.4.2.2
[+] ly_pattern_compile ( struct ly_ctx const* ctx, char const* pattern, pcre2_code_8** pcode ) 2
⇣
ly_pattern_compile ( struct ly_ctx const* ctx, char const* pattern, void** pat_comp )

| Change | Effect
--- | --- | ---
1 | Type of 3rd parameter pcode has been changed from pcre2_code_8** to void**. | Replacement of parameter data type may indicate a change in its semantic meaning.
2 | 3rd parameter pcode has been renamed to pat_comp. | Renaming of a parameter may indicate a change in its semantic meaning.

[+] ly_pattern_match ( struct ly_ctx const* ctx, char const* pattern, char const* string, uint32_t str_len, pcre2_code_8** pcode ) 2
⇣
ly_pattern_match ( struct ly_ctx const* ctx, char const* pattern, char const* string, uint32_t str_len, void** pat_comp )

| Change | Effect
--- | --- | ---
1 | Type of 5th parameter pcode has been changed from pcre2_code_8** to void**. | Replacement of parameter data type may indicate a change in its semantic meaning.
2 | 5th parameter pcode has been renamed to pat_comp. | Renaming of a parameter may indicate a change in its semantic meaning.

[+] lyd_any_copy_value ( struct lyd_node* trg, union lyd_any_value const* value, enum LYD_ANYDATA_VALUETYPE value_type ) 1
⇣
lyd_any_copy_value ( struct lyd_node* trg, void const* value, enum LYD_ANYDATA_VALUETYPE value_type )

| Change | Effect
--- | --- | ---
1 | Type of 2nd parameter value has been changed from union lyd_any_value const* to void const*. | Replacement of parameter data type may indicate a change in its semantic meaning.

to the top

## Header Files 18

context.h
dict.h
hash_table.h
in.h
log.h
metadata.h
out.h
parser_data.h
parser_schema.h
plugins.h
plugins_exts.h
plugins_types.h
printer_data.h
printer_schema.h
set.h
tree.h
tree_data.h
tree_schema.h
to the top

## Source Files 29

bits.c
context.c
dict.c
diff.c
hash_table.c
in.c
instanceid.c
log.c
out.c
plugins.c
plugins_exts.c
plugins_types.c
printer_data.c
printer_schema.c
printer_yang.c
schema_features.c
schema_mount.c
set.c
string.c
tree_data.c
tree_data_common.c
tree_data_free.c
tree_data_new.c
tree_schema.c
tree_schema_common.c
tree_schema_free.c
validation.c
xpath.c
xpath1.0.c
to the top

## Objects 1

libyang.so.4.2.2
to the top

## Test Info

Module Name | libyang.so
Version #1 | 4.2.2
Version #2 | 5.0.0
Arch | x86_64
Subject | Source Compatibility

## Test Results

Total Header Files | 18
Total Source Files | 29
Total Objects | 1
Total Symbols / Types | 369 / 194
Compatibility | 56.5%

## Problem Summary

| Severity | Count
--- | --- | ---
Added Symbols | - | 4
Removed Symbols | High | 10
Problems with Data Types | High | 1
Medium | 3
Low | 4
Problems with Symbols | High | 10
Medium | 6
Low | 3
Problems with Constants | Low | 0
Other Changes in Symbols | - | 4

## Added Symbols 4

log.h
ly_temp_log_clb ( ly_log_clb clb )
parser_data.h
lyd_parse_value_fragment ( struct ly_ctx const* ctx, char const* path, struct ly_in* in, enum LYD_FORMAT format, uint32_t new_val_options, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
tree_data.h
ly_pattern_free ( void* pat_comp )
tree_schema.h
lys_find_module ( struct ly_ctx const* ctx, struct lysc_node const* ctx_node, char const* prefix, uint32_t prefix_len, enum LY_VALUE_FORMAT format, void const* prefix_data )
to the top

## Removed Symbols 10

parser_data.h
lyd_parse_ext_data ( struct lysc_ext_instance const* ext, struct lyd_node* parent, struct ly_in* in, enum LYD_FORMAT format, uint32_t parse_options, uint32_t validate_options, struct lyd_node** tree )
lyd_parse_ext_op ( struct lysc_ext_instance const* ext, struct lyd_node* parent, struct ly_in* in, enum LYD_FORMAT format, enum lyd_type data_type, uint32_t parse_options, struct lyd_node** tree, struct lyd_node** op )
plugins_exts.h
lyplg_ext_insert ( struct lyd_node* parent, struct lyd_node* first )
plugins_types.h
lyplg_type_identity_module ( struct ly_ctx const* ctx, struct lysc_node const* ctx_node, char const* prefix, uint32_t prefix_len, enum LY_VALUE_FORMAT format, void const* prefix_data )
tree_data.h
lyd_new_ext_any ( struct lysc_ext_instance const* ext, char const* name, void const* value, enum LYD_ANYDATA_VALUETYPE value_type, uint32_t options, struct lyd_node** node )
lyd_new_ext_inner ( struct lysc_ext_instance const* ext, char const* name, struct lyd_node** node )
lyd_new_ext_list ( struct lysc_ext_instance const* ext, char const* name, uint32_t options, struct lyd_node** node, ... )
lyd_new_ext_path ( struct lyd_node* parent, struct lysc_ext_instance const* ext, char const* path, char const* value, uint32_t options, struct lyd_node** node )
lyd_new_ext_term ( struct lysc_ext_instance const* ext, char const* name, void const* value, uint32_t value_size_bits, uint32_t options, struct lyd_node** node )
tree_schema.h
lys_getnext_ext ( struct lysc_node const* last, struct lysc_node const* parent, struct lysc_ext_instance const* ext, uint32_t options )
to the top

## Problems with Data Types, High Severity 1

tree_data.h
[+] struct lyd_value_union 1

| Change | Effect
--- | --- | ---
1 | Field top_ext has been removed from this type. | Recompilation of a client program may be broken with the error message: 'struct lyd_value_union' has no member named 'top_ext'.

[+] affected symbols: 147 (39.8%)
ly_ctx_get_yanglib_data ( struct ly_ctx const* ctx, struct lyd_node** root_p, char const* content_id_format, ... )
Field 'root_p.meta.value.unnamed0.subvalue' in 2nd parameter 'root_p' (pointer) has base type 'struct lyd_value_union'.
ly_ctx_new_yldata ( char const* search_dir, struct lyd_node const* tree, int options, struct ly_ctx** ctx )
Field 'tree.meta.value.unnamed0.subvalue' in 2nd parameter 'tree' (pointer) has base type 'struct lyd_value_union'.
ly_ctx_set_ext_data_clb ( struct ly_ctx const* ctx, ly_ext_data_clb clb, void* user_data )
Field 'clb.p1.prev.meta.value.unnamed0.subvalue' in 2nd parameter 'clb' has base type 'struct lyd_value_union'.
ly_set_add ( struct ly_set* set, void const* object, ly_bool list, uint32_t* index_p )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_clean ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_contains ( struct ly_set const* set, void const* object, uint32_t* index_p )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_dup ( struct ly_set const* set, void*(*duplicator)(void const*), struct ly_set** newset_p )
Field 'newset_p.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 3rd parameter 'newset_p' (pointer) has base type 'struct lyd_value_union'.
ly_set_erase ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_free ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 1st parameter 'set' (pointer) has base type 'struct lyd_value_union'.
ly_set_merge ( struct ly_set* trg, struct ly_set const* src, ly_bool list, void*(*duplicator)(void const*) )
Field 'src.unnamed0.dnodes.meta.value.unnamed0.subvalue' in 2nd parameter 'src' (pointer) has base type 'struct lyd_value_union'.
...
to the top

## Problems with Symbols, High Severity 10

parser_data.h
[+] lyd_validate_ext ( struct lyd_node** ext_tree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node const* dep_tree, struct lyd_node** diff ) 1
⇣
lyd_validate_ext ( struct lyd_node** subtree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node** diff )

| Change | Effect
--- | --- | ---
1 | 4th middle parameter dep_tree has been removed from the calling stack. | Recompilation of a client program may be broken.

plugins_types.h
[+] lyplg_type_lypath_new ( struct ly_ctx const* ctx, char const* value, uint32_t value_len, uint32_t options, enum LY_VALUE_FORMAT format, void* prefix_data, struct lysc_node const* ctx_node, struct lysc_ext_instance const* top_ext, struct lys_glob_unres* unres, struct ly_path** path, struct ly_err_item** err ) 1
⇣
lyplg_type_lypath_new ( struct ly_ctx const* ctx, char const* value, uint32_t value_len, uint32_t options, enum LY_VALUE_FORMAT format, void* prefix_data, struct lysc_node const* ctx_node, struct lys_glob_unres* unres, struct ly_path** path, struct ly_err_item** err )

| Change | Effect
--- | --- | ---
1 | 8th middle parameter top_ext has been removed from the calling stack. | Recompilation of a client program may be broken.

[+] lyplg_type_resolve_leafref ( struct lysc_type_leafref const* lref, struct lyd_node const* node, struct lyd_value* value, struct lyd_node const* tree, struct lysc_ext_instance const* top_ext, struct ly_set** targets, char** errmsg ) 1
⇣
lyplg_type_resolve_leafref ( struct lysc_type_leafref const* lref, struct lyd_node const* node, struct lyd_value* value, struct lyd_node const* tree, struct ly_set** targets, char** errmsg )

| Change | Effect
--- | --- | ---
1 | 5th middle parameter top_ext has been removed from the calling stack. | Recompilation of a client program may be broken.

[+] lyplg_type_store_string ( struct ly_ctx const* ctx, struct lysc_type const* type, void const* value, uint32_t value_size_bits, uint32_t options, enum LY_VALUE_FORMAT format, void* UNUSED_prefix_data, uint32_t hints, struct lysc_node const* UNUSED_ctx_node, struct lysc_ext_instance const* UNUSED_top_ext, struct lyd_value* storage, struct lys_glob_unres* UNUSED_unres, struct ly_err_item** err ) 1
⇣
lyplg_type_store_string ( struct ly_ctx const* ctx, struct lysc_type const* type, void const* value, uint32_t value_size_bits, uint32_t options, enum LY_VALUE_FORMAT format, void* UNUSED_prefix_data, uint32_t hints, struct lysc_node const* UNUSED_ctx_node, struct lyd_value* storage, struct lys_glob_unres* UNUSED_unres, struct ly_err_item** err )

| Change | Effect
--- | --- | ---
1 | 10th middle parameter UNUSED_top_ext has been removed from the calling stack. | Recompilation of a client program may be broken.

tree_schema.h
[+] lys_find_child ( struct lysc_node const* parent, struct lys_module const* module, char const* name, size_t name_len, uint16_t nodetype, uint32_t options ) 6
⇣
lys_find_child ( struct ly_ctx const* ctx, struct lysc_node const* parent, struct lys_module const* mod, char const* mod_name, uint32_t mod_len, char const* name, uint32_t name_len, uint32_t options )

| Change | Effect
--- | --- | ---
1 | Parameter ctx of type struct ly_ctx const* has been added to the calling stack at the middle position. | Recompilation of a client program may be broken.
2 | Parameter mod of type struct lys_module const* has been added to the calling stack at the middle position. | Recompilation of a client program may be broken.
3 | Parameter mod_name of type char const* has been added to the calling stack at the middle position. | Recompilation of a client program may be broken.
4 | Parameter mod_len of type uint32_t has been added to the calling stack at the middle position. | Recompilation of a client program may be broken.
5 | 2nd middle parameter module has been removed from the calling stack. | Recompilation of a client program may be broken.
6 | 5th middle parameter nodetype has been removed from the calling stack. | Recompilation of a client program may be broken.

to the top

## Problems with Data Types, Medium Severity 3

tree_data.h
[+] struct anon-struct-tree_data.h-848 1

| Change | Effect
--- | --- | ---
1 | Base type of field parent has been changed from struct lyd_node_inner to struct lyd_node of different format. | Recompilation of a client program may be broken.

[+] affected symbols: 2 (0.5%)
lyd_leafref_get_links ( struct lyd_node_term const* node, struct lyd_leafref_links_rec const** record )
Field 'node.unnamed0.unnamed0' in 1st parameter 'node' (pointer) is of type 'anon-struct-tree_data.h-848'.
lyd_value_compare ( struct lyd_node_term const* node, char const* value, uint32_t value_len )
Field 'node.unnamed0.unnamed0' in 1st parameter 'node' (pointer) is of type 'anon-struct-tree_data.h-848'.
[+] struct anon-struct-tree_data.h-985 1

| Change | Effect
--- | --- | ---
1 | Base type of field parent has been changed from struct lyd_node_inner to struct lyd_node of different format. | Recompilation of a client program may be broken.

[+] affected symbols: 5 (1.4%)
lyd_free_attr_siblings ( struct ly_ctx const* ctx, struct lyd_attr* attr )
Field 'attr.parent.unnamed0.unnamed0' in 2nd parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_free_attr_single ( struct ly_ctx const* ctx, struct lyd_attr* attr )
Field 'attr.parent.unnamed0.unnamed0' in 2nd parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_new_attr ( struct lyd_node* parent, char const* module_name, char const* name, char const* value, struct lyd_attr** attr )
Field 'attr.parent.unnamed0.unnamed0' in 5th parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_new_attr2 ( struct lyd_node* parent, char const* module_ns, char const* name, char const* value, struct lyd_attr** attr )
Field 'attr.parent.unnamed0.unnamed0' in 5th parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
lyd_new_meta2 ( struct ly_ctx const* ctx, struct lyd_node* parent, uint32_t options, struct lyd_attr const* attr, struct lyd_meta** meta )
Field 'attr.next.parent.unnamed0.unnamed0' in 4th parameter 'attr' (pointer) is of type 'anon-struct-tree_data.h-985'.
[+] struct lyd_node 1

| Change | Effect
--- | --- | ---
1 | Base type of field parent has been changed from struct lyd_node_inner to struct lyd_node of different format. | Recompilation of a client program may be broken.

[+] affected symbols: 131 (35.5%)
ly_ctx_get_yanglib_data ( struct ly_ctx const* ctx, struct lyd_node** root_p, char const* content_id_format, ... )
2nd parameter 'root_p' (pointer) has base type 'struct lyd_node'.
ly_ctx_new_yldata ( char const* search_dir, struct lyd_node const* tree, int options, struct ly_ctx** ctx )
Field 'tree.next' in 2nd parameter 'tree' (pointer) has base type 'struct lyd_node'.
ly_ctx_set_ext_data_clb ( struct ly_ctx const* ctx, ly_ext_data_clb clb, void* user_data )
Field 'clb.p1' in 2nd parameter 'clb' has base type 'struct lyd_node'.
ly_set_add ( struct ly_set* set, void const* object, ly_bool list, uint32_t* index_p )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_clean ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_contains ( struct ly_set const* set, void const* object, uint32_t* index_p )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_dup ( struct ly_set const* set, void*(*duplicator)(void const*), struct ly_set** newset_p )
Field 'newset_p.unnamed0.dnodes' in 3rd parameter 'newset_p' (pointer) has base type 'struct lyd_node'.
ly_set_erase ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_free ( struct ly_set* set, void(*destructor)(void*) )
Field 'set.unnamed0.dnodes' in 1st parameter 'set' (pointer) has base type 'struct lyd_node'.
ly_set_merge ( struct ly_set* trg, struct ly_set const* src, ly_bool list, void*(*duplicator)(void const*) )
Field 'src.unnamed0.dnodes' in 2nd parameter 'src' (pointer) has base type 'struct lyd_node'.
...
to the top

## Problems with Symbols, Medium Severity 6

log.h
[+] ly_err_print ( struct ly_ctx const* ctx, struct ly_err_item const* eitem ) 2
⇣
ly_err_print ( struct ly_ctx const* ctx, struct ly_err_item const* eitem, struct lyd_node const* lnode, struct lysc_node const* snode )

| Change | Effect
--- | --- | ---
1 | Parameter lnode of type struct lyd_node const* has been added to the calling stack. | Recompilation of a client program may be broken.
2 | Parameter snode of type struct lysc_node const* has been added to the calling stack. | Recompilation of a client program may be broken.

tree_data.h
[+] lyd_dup_siblings ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_siblings ( struct lyd_node const* node, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of parameter parent has been changed from struct lyd_node_inner to struct lyd_node of different format. | Recompilation of a client program may be broken.

[+] lyd_dup_siblings_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_siblings_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of parameter parent has been changed from struct lyd_node_inner to struct lyd_node of different format. | Recompilation of a client program may be broken.

[+] lyd_dup_single ( struct lyd_node const* node, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_single ( struct lyd_node const* node, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of parameter parent has been changed from struct lyd_node_inner to struct lyd_node of different format. | Recompilation of a client program may be broken.

[+] lyd_dup_single_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node_inner* parent, uint32_t options, struct lyd_node** dup ) 1
⇣
lyd_dup_single_to_ctx ( struct lyd_node const* node, struct ly_ctx const* trg_ctx, struct lyd_node* parent, uint32_t options, struct lyd_node** dup )

| Change | Effect
--- | --- | ---
1 | Base type of parameter parent has been changed from struct lyd_node_inner to struct lyd_node of different format. | Recompilation of a client program may be broken.

to the top

## Problems with Data Types, Low Severity 4

plugins_exts.h
[+] struct lyplg_ext 1

| Change | Effect
--- | --- | ---
1 | Field snode_xpath has been added to this type. | This field will not be initialized or used by old client applications.

[+] affected symbols: 2 (0.5%)
lyplg_add_extension_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_ext_record const* recs )
Field 'recs.plugin' in 3rd parameter 'recs' (pointer) is of type 'struct lyplg_ext'.
lysc_get_ext_plugin ( uintptr_t plugin_ref )
Return value (pointer) has base type 'struct lyplg_ext'.
[+] typedef lyplg_ext_data_snode_clb 1

| Change | Effect
--- | --- | ---
1 | Base type has been changed from LY_ERR(*)(struct lysc_ext_instance*, struct lyd_node const*, struct lysc_node const*, char const*, uint32_t, LY_VALUE_FORMAT, void*, char const*, uint32_t, ly_bool, struct lysc_node const**) to LY_ERR(*)(struct lysc_ext_instance*, struct lyd_node const*, struct lysc_node const*, char const*, uint32_t, LY_VALUE_FORMAT, void*, char const*, uint32_t, struct lysc_node const**). | Recompilation of a client program may be broken.

[+] affected symbols: 2 (0.5%)
lyplg_add_extension_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_ext_record const* recs )
Field 'recs.plugin.snode' in 3rd parameter 'recs' (pointer) is of type 'lyplg_ext_data_snode_clb'.
lysc_get_ext_plugin ( uintptr_t plugin_ref )
Field 'retval.snode' in the return value (pointer) is of type 'lyplg_ext_data_snode_clb'.
plugins_types.h
[+] typedef lyplg_type_store_clb 1

| Change | Effect
--- | --- | ---
1 | Base type has been changed from LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, void const*, uint32_t, uint32_t, LY_VALUE_FORMAT, void*, uint32_t, struct lysc_node const*, struct lysc_ext_instance const*, struct lyd_value*, struct lys_glob_unres*, struct ly_err_item**) to LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, void const*, uint32_t, uint32_t, LY_VALUE_FORMAT, void*, uint32_t, struct lysc_node const*, struct lyd_value*, struct lys_glob_unres*, struct ly_err_item**). | Recompilation of a client program may be broken.

[+] affected symbols: 2 (0.5%)
lyplg_add_type_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_type_record const* recs )
Field 'recs.plugin.store' in 3rd parameter 'recs' (pointer) is of type 'lyplg_type_store_clb'.
lysc_get_type_plugin ( uintptr_t plugin_ref )
Field 'retval.store' in the return value (pointer) is of type 'lyplg_type_store_clb'.
[+] typedef lyplg_type_validate_tree_clb 1

| Change | Effect
--- | --- | ---
1 | Base type has been changed from LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, struct lyd_node const*, struct lyd_node const*, struct lysc_ext_instance const*, struct lyd_value*, struct ly_err_item**) to LY_ERR(*)(struct ly_ctx const*, struct lysc_type const*, struct lyd_node const*, struct lyd_node const*, struct lyd_value*, struct ly_err_item**). | Recompilation of a client program may be broken.

[+] affected symbols: 2 (0.5%)
lyplg_add_type_plugin ( struct ly_ctx* ctx, uint32_t version, struct lyplg_type_record const* recs )
Field 'recs.plugin.validate_tree' in 3rd parameter 'recs' (pointer) is of type 'lyplg_type_validate_tree_clb'.
lysc_get_type_plugin ( uintptr_t plugin_ref )
Field 'retval.validate_tree' in the return value (pointer) is of type 'lyplg_type_validate_tree_clb'.
to the top

## Problems with Symbols, Low Severity 3

tree_data.h
[+] ly_pattern_compile ( struct ly_ctx const* ctx, char const* pattern, pcre2_code_8** pcode ) 1
⇣
ly_pattern_compile ( struct ly_ctx const* ctx, char const* pattern, void** pat_comp )

| Change | Effect
--- | --- | ---
1 | Type of 3rd parameter pcode has been changed from pcre2_code_8** to void**. | Recompilation of a client program may be broken.

[+] ly_pattern_match ( struct ly_ctx const* ctx, char const* pattern, char const* string, uint32_t str_len, pcre2_code_8** pcode ) 1
⇣
ly_pattern_match ( struct ly_ctx const* ctx, char const* pattern, char const* string, uint32_t str_len, void** pat_comp )

| Change | Effect
--- | --- | ---
1 | Type of 5th parameter pcode has been changed from pcre2_code_8** to void**. | Recompilation of a client program may be broken.

[+] lyd_any_copy_value ( struct lyd_node* trg, union lyd_any_value const* value, enum LYD_ANYDATA_VALUETYPE value_type ) 1
⇣
lyd_any_copy_value ( struct lyd_node* trg, void const* value, enum LYD_ANYDATA_VALUETYPE value_type )

| Change | Effect
--- | --- | ---
1 | Type of 2nd parameter value has been changed from union lyd_any_value const* to void const*. | Recompilation of a client program may be broken.

to the top

## Other Changes in Symbols 4

context.h
[+] ly_ctx_unset_searchdir ( struct ly_ctx* ctx, char const* value ) 1
⇣
ly_ctx_unset_searchdir ( struct ly_ctx* ctx, char const* search_dir )

| Change | Effect
--- | --- | ---
1 | 2nd parameter value has been renamed to search_dir. | No effect.

parser_data.h
[+] lyd_validate_ext ( struct lyd_node** ext_tree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node const* dep_tree, struct lyd_node** diff ) 1
⇣
lyd_validate_ext ( struct lyd_node** subtree, struct lysc_ext_instance const* ext, uint32_t val_opts, struct lyd_node** diff )

| Change | Effect
--- | --- | ---
1 | 1st parameter ext_tree has been renamed to subtree. | No effect.

tree_data.h
[+] ly_pattern_compile ( struct ly_ctx const* ctx, char const* pattern, pcre2_code_8** pcode ) 1
⇣
ly_pattern_compile ( struct ly_ctx const* ctx, char const* pattern, void** pat_comp )

| Change | Effect
--- | --- | ---
1 | 3rd parameter pcode has been renamed to pat_comp. | No effect.

[+] ly_pattern_match ( struct ly_ctx const* ctx, char const* pattern, char const* string, uint32_t str_len, pcre2_code_8** pcode ) 1
⇣
ly_pattern_match ( struct ly_ctx const* ctx, char const* pattern, char const* string, uint32_t str_len, void** pat_comp )

| Change | Effect
--- | --- | ---
1 | 5th parameter pcode has been renamed to pat_comp. | No effect.

to the top

## Header Files 18

context.h
dict.h
hash_table.h
in.h
log.h
metadata.h
out.h
parser_data.h
parser_schema.h
plugins.h
plugins_exts.h
plugins_types.h
printer_data.h
printer_schema.h
set.h
tree.h
tree_data.h
tree_schema.h
to the top

## Source Files 29

bits.c
context.c
dict.c
diff.c
hash_table.c
in.c
instanceid.c
log.c
out.c
plugins.c
plugins_exts.c
plugins_types.c
printer_data.c
printer_schema.c
printer_yang.c
schema_features.c
schema_mount.c
set.c
string.c
tree_data.c
tree_data_common.c
tree_data_free.c
tree_data_new.c
tree_schema.c
tree_schema_common.c
tree_schema_free.c
validation.c
xpath.c
xpath1.0.c
to the top

## Objects 1

libyang.so.4.2.2
to the top