From 300108641a168ab79a21fc4731cc23935257fa73 Mon Sep 17 00:00:00 2001 From: deajan Date: Sun, 28 May 2017 20:17:57 +0200 Subject: [PATCH] Rebuilt targets --- dev/debug_osync.sh | 14 ++++++++++++-- osync.sh | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index a03d0fd..c39d76e 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -41,7 +41,7 @@ IS_STABLE=yes _OFUNCTIONS_VERSION=2.1.4-dev -_OFUNCTIONS_BUILD=2017052201 +_OFUNCTIONS_BUILD=2017052802 _OFUNCTIONS_BOOTSTRAP=true ## BEGIN Generic bash functions written in 2013-2017 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr @@ -347,14 +347,24 @@ function KillChilds { local pid="${1}" # Parent pid to kill childs local self="${2:-false}" # Should parent be killed too ? + if [ $(IsNumeric "$pid") -eq 0 ] || [ "$pid" == "" ]; then + Logger "Bogus pid given [$pid]." "CRITICAL" + return 1 + fi + # Warning: pgrep does not exist in cygwin, have this checked in CheckEnvironment if children="$(pgrep -P "$pid")"; then + if [[ "$pid" == *"$children"* ]]; then + Logger "Bogus pgrep implementation." "CRITICAL" + children="${children/$pid/}" + fi for child in $children; do Logger "Launching KillChilds \"$child\" true" "DEBUG" #__WITH_PARANOIA_DEBUG KillChilds "$child" true done fi - # Try to kill nicely, if not, wait 15 seconds to let Trap actions happen before killing + + # Try to kill nicely, if not, wait 15 seconds to let Trap actions happen before killing if [ "$self" == true ]; then if kill -0 "$pid" > /dev/null 2>&1; then kill -s TERM "$pid" diff --git a/osync.sh b/osync.sh index 5a6bd2e..38564eb 100755 --- a/osync.sh +++ b/osync.sh @@ -10,7 +10,7 @@ IS_STABLE=yes _OFUNCTIONS_VERSION=2.1.4-dev -_OFUNCTIONS_BUILD=2017052201 +_OFUNCTIONS_BUILD=2017052802 _OFUNCTIONS_BOOTSTRAP=true ## BEGIN Generic bash functions written in 2013-2017 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr @@ -301,13 +301,23 @@ function KillChilds { local pid="${1}" # Parent pid to kill childs local self="${2:-false}" # Should parent be killed too ? + if [ $(IsNumeric "$pid") -eq 0 ] || [ "$pid" == "" ]; then + Logger "Bogus pid given [$pid]." "CRITICAL" + return 1 + fi + # Warning: pgrep does not exist in cygwin, have this checked in CheckEnvironment if children="$(pgrep -P "$pid")"; then + if [[ "$pid" == *"$children"* ]]; then + Logger "Bogus pgrep implementation." "CRITICAL" + children="${children/$pid/}" + fi for child in $children; do KillChilds "$child" true done fi - # Try to kill nicely, if not, wait 15 seconds to let Trap actions happen before killing + + # Try to kill nicely, if not, wait 15 seconds to let Trap actions happen before killing if [ "$self" == true ]; then if kill -0 "$pid" > /dev/null 2>&1; then kill -s TERM "$pid"