- Patch added to fix bactracking after no match found bug. When the next version of libloc is released then this patch can be removed as the patch will be integrated in with that version. - Update of rootfile not required. - Tested out on local build of libloc-0.9.18
Fixes: bug13861 Reported-by: Adolf Belka <[email protected]> Suggested-by: Michael Tremer <[email protected]> Tested-by: Adolf Belka <[email protected]> Signed-off-by: Adolf Belka <[email protected]> --- lfs/libloc | 1 + ...tch_was_found_at_the_end_of_the_tree.patch | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/patches/libloc-0.9.18_Fix_backtracking_after_no_match_was_found_at_the_end_of_the_tree.patch diff --git a/lfs/libloc b/lfs/libloc index f2f0aa8a9..e9bbe16ba 100644 --- a/lfs/libloc +++ b/lfs/libloc @@ -82,6 +82,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # https://lists.ipfire.org/pipermail/development/2022-November/014763.html cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libloc-0.9.18-Revert-Install-Perl-files-to-Perl-vendor-directory.patch cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libloc-0.9.18_gettext-0.25_fix.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/libloc-0.9.18_Fix_backtracking_after_no_match_was_found_at_the_end_of_the_tree.patch cd $(DIR_APP) && ./autogen.sh cd $(DIR_APP) && ./configure \ --prefix=/usr \ diff --git a/src/patches/libloc-0.9.18_Fix_backtracking_after_no_match_was_found_at_the_end_of_the_tree.patch b/src/patches/libloc-0.9.18_Fix_backtracking_after_no_match_was_found_at_the_end_of_the_tree.patch new file mode 100644 index 000000000..6ac9acf3c --- /dev/null +++ b/src/patches/libloc-0.9.18_Fix_backtracking_after_no_match_was_found_at_the_end_of_the_tree.patch @@ -0,0 +1,31 @@ +X-Git-Url: http://git.ipfire.org/?p=location%2Flibloc.git;a=blobdiff_plain;f=src%2Fdatabase.c;h=c251061cc8a254879491ebe133b1b4f3b58ddf30;hp=0c8608542aaad6e82c4d8602bbeb388ab43225bb;hb=95d271bb90b4cebe81c288a95a2336aa63bac4d7;hpb=d1120513a30de43308d9ed848f7ef3c6ede6d767 + +diff --git a/src/database.c b/src/database.c +index 0c86085..c251061 100644 +--- a/src/database.c ++++ b/src/database.c +@@ -907,13 +907,7 @@ static int __loc_database_lookup(struct loc_database* db, const struct in6_addr* + + // Move on to the next node + r = __loc_database_lookup(db, address, network, network_address, node_index, level + 1); +- +- // End here if a result was found +- if (r == 0) +- return r; +- +- // Raise any errors +- else if (r < 0) ++ if (r < 0) + return r; + + DEBUG(db->ctx, "No match found below level %u\n", level); +@@ -922,7 +916,7 @@ static int __loc_database_lookup(struct loc_database* db, const struct in6_addr* + } + + // If this node has a leaf, we will check if it matches +- if (__loc_database_node_is_leaf(node_v1)) { ++ if (!*network && __loc_database_node_is_leaf(node_v1)) { + r = __loc_database_lookup_handle_leaf(db, address, network, network_address, level, node_v1); + if (r < 0) + return r; + -- 2.50.0
