procd: fix invalid JSON filter expression in procd_running()
authorJo-Philipp Wich <jo@mein.io>
Thu, 19 Sep 2019 05:16:49 +0000 (07:16 +0200)
committerJo-Philipp Wich <jo@mein.io>
Thu, 19 Sep 2019 05:20:32 +0000 (07:20 +0200)
Since service and instance names may contain characters which are not allowed
in JSON path labels, such as dashes or spaces, change the filter expression
to array square bracket notation to properly match these cases as well.

Fixes: 2c3dd70741 ("procd: add procd_running() helper for checking running state")
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
package/system/procd/Makefile
package/system/procd/files/procd.sh

index 07deda58e983eab2ade90def27f4729b9275bf2d..1018bc65e6ce4dc2db9237cb45f12e6db7225174 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=procd
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git
index a9d2b341beab58658ceb245e62d426d3c49b1258..014b4499e15e57ead2aa709323bc917eedb74e58 100644 (file)
@@ -412,7 +412,7 @@ procd_running() {
 
        json_init
        json_add_string name "$service"
-       running=$(_procd_ubus_call list | jsonfilter -e "@.$service.instances.${instance}.running")
+       running=$(_procd_ubus_call list | jsonfilter -e "@['$service'].instances['$instance'].running")
 
        [ "$running" = "true" ]
 }