From a126bd955ff2aafc2e715a9fb9b7a5c515bcc0d2 Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Mon, 24 Feb 2014 18:06:15 +0100 Subject: [PATCH] use while read -> avoids ifs problem Signed-off-by: Nico Schottelius --- cdist/conf/type/__ssh_authorized_keys/manifest | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/cdist/conf/type/__ssh_authorized_keys/manifest b/cdist/conf/type/__ssh_authorized_keys/manifest index 313e3b23..efcd2d7a 100755 --- a/cdist/conf/type/__ssh_authorized_keys/manifest +++ b/cdist/conf/type/__ssh_authorized_keys/manifest @@ -71,21 +71,17 @@ _cksum() { echo "$1" | cksum | cut -d' ' -f 1 } -# Add each key -IFS=$'\n' -for key in $(cat "$__object/parameter/key"); do - unset IFS - raw_key="$(echo "$key" | tr ' ' '\n' | awk '/^ssh-(rsa|dsa)/ {printf $1" ";getline;printf $1}')" - - cksum_key="$(_cksum "$raw_key")" +while read key; do + cksum_key="$(_cksum "$key")" line_id="${owner}-${cksum_key}" set -- "$line_id" set -- "$@" --file "$file" - set -- "$@" --regex ".*$raw_key.*" + set -- "$@" --regex ".*$key.*" if [ "$state" = 'present' ]; then set -- "$@" --line "$key" fi set -- "$@" --state "$state" - require="__block/$__object_name" __line "$@" -done + # Ensure __line does not read stdin + require="__block/$__object_name" __line "$@" < /dev/null +done < "$__object/parameter/key"