summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-oe/recipes-support/libconfuse/files/0001-only-apply-search-path-logic-to-relative-pathnames.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-support/libconfuse/files/0001-only-apply-search-path-logic-to-relative-pathnames.patch')
-rw-r--r--meta-openembedded/meta-oe/recipes-support/libconfuse/files/0001-only-apply-search-path-logic-to-relative-pathnames.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-support/libconfuse/files/0001-only-apply-search-path-logic-to-relative-pathnames.patch b/meta-openembedded/meta-oe/recipes-support/libconfuse/files/0001-only-apply-search-path-logic-to-relative-pathnames.patch
new file mode 100644
index 0000000000..aa9fab86e6
--- /dev/null
+++ b/meta-openembedded/meta-oe/recipes-support/libconfuse/files/0001-only-apply-search-path-logic-to-relative-pathnames.patch
@@ -0,0 +1,48 @@
+From b684f4cc25821b6e86a58576f864e4b12dfdfecc Mon Sep 17 00:00:00 2001
+From: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
+Date: Sat, 5 Jun 2021 22:57:51 +0200
+Subject: [PATCH] only apply search path logic to relative pathnames
+
+Adding any directory to the search path via cfg_add_searchpath breaks
+lookup of absolute paths. So change the logic in cfg_searchpath() to
+ignore the search path when the given filename is absolute, and merely
+check that for existence.
+
+This is technically an ABI change, but the current behaviour is quite
+unusual and unexpected.
+
+Upstream-Status: Backport [https://github.com/libconfuse/libconfuse/pull/155]
+
+Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
+---
+ src/confuse.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/confuse.c b/src/confuse.c
+index 2ea0254..19b56e3 100644
+--- a/src/confuse.c
++++ b/src/confuse.c
+@@ -1746,12 +1746,20 @@ DLLIMPORT char *cfg_searchpath(cfg_searchpath_t *p, const char *file)
+ return NULL;
+ }
+
++ if (file[0] == '/') {
++ fullpath = strdup(file);
++ if (!fullpath)
++ return NULL;
++ goto check;
++ }
++
+ if ((fullpath = cfg_searchpath(p->next, file)) != NULL)
+ return fullpath;
+
+ if ((fullpath = cfg_make_fullpath(p->dir, file)) == NULL)
+ return NULL;
+
++check:
+ #ifdef HAVE_SYS_STAT_H
+ err = stat((const char *)fullpath, &st);
+ if ((!err) && S_ISREG(st.st_mode))
+--
+2.31.1
+