Skip to contentSkip to conversation

sanity.bbclass: quote path passed to stat in get_filesystem_id()

PATCH In review Andre McCurdy 2 participants 3 messages Mar 24, 2018 – Mar 26, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 sanity.bbclass: quote path passed to stat in get_filesystem_id()

Although get_filesystem_id() is a private API and never gets passed a path containing spaces or other special characters, etc, quote the path anyway for consistency.

---
 meta/classes/sanity.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/classes/sanity.bbclass +1 -1
index 6716985..e0e57ce 100644
@@ -336,7 +336,7 @@ def check_path_length(filepath, pathname, limit):
     return ""
 
 def get_filesystem_id(path):
-    status, result = oe.utils.getstatusoutput("stat -f -c '%s' %s" % ("%t", path))
+    status, result = oe.utils.getstatusoutput("stat -f -c '%s' '%s'" % ("%t", path))
     if status == 0:
         return result
     else:
Signature · 1 line
1.9.1
#1 lore raw

PATCH 2/2 package.bbclass: use single quotes for path passed to file in isELF()

Apparently there are recipes in the wild which generate files with filenames containing '$' characters - which cause errors during packaging.

Instead of adding another special case to escape '$' characters when constructing the command passed to oe.utils.getstatusoutput(), switch to using single quotes to quote the path - and therefore make isELF() consistent with the way filenames and paths are quoted by every other caller of oe.utils.getstatusoutput() in oe-core.

---
 meta/classes/package.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/classes/package.bbclass +1 -1
index 83f53a4..504c023 100644
@@ -918,7 +918,7 @@ python split_and_strip_files () {
     # 16 - kernel module
     def isELF(path):
         type = 0
-        ret, result = oe.utils.getstatusoutput("file \"%s\"" % path.replace("\"", "\\\""))
+        ret, result = oe.utils.getstatusoutput("file '%s'" % path)
 
         if ret:
             msg = "split_and_strip_files: 'file %s' failed" % path
Signature · 1 line
1.9.1
#2 lore raw
In reply to Andre McCurdy

A better fix would be to not use getstatusoutput() at all, but directly hit subprocess and pass the argument as a list.

Ross

Quoted 30 lines · Andre McCurdy

Although get_filesystem_id() is a private API and never gets passed a path containing spaces or other special characters, etc, quote the path anyway for consistency.

---
 meta/classes/sanity.bbclass | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/classes/sanity.bbclass +1 -2
index 6716985..e0e57ce 100644
@@ -336,7 +336,7 @@ def check_path_length(filepath, pathname, limit):
     return ""
 
 def get_filesystem_id(path):
-    status, result = oe.utils.getstatusoutput("stat -f -c '%s' %s" % ("%t", path))
+    status, result = oe.utils.getstatusoutput("stat -f -c '%s' '%s'" % ("%t", path))
     if status == 0:
         return result
     else:
--

1.9.1

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core