]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
libloc: Fixes bug13861 - libloc-0.9.18 fails to find some ASN info
authorAdolf Belka <adolf.belka@ipfire.org>
Fri, 27 Jun 2025 19:53:50 +0000 (21:53 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 29 Jun 2025 16:01:58 +0000 (16:01 +0000)
- 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 <adolf.belka@ipfire.org>
Suggested-by: Michael Tremer <michael.tremer@ipfire.org>
Tested-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Adolf Belka <adolf.belka@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
lfs/libloc
src/patches/libloc-0.9.18_Fix_backtracking_after_no_match_was_found_at_the_end_of_the_tree.patch [new file with mode: 0644]

index f2f0aa8a9c89a067e5b472ff93fcd075986ad8ab..e9bbe16baf620cfc30916ada2c447cf1088dd862 100644 (file)
@@ -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 (file)
index 0000000..6ac9acf
--- /dev/null
@@ -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;
+