diff options
author | Will Holley <willholley@gmail.com> | 2019-12-11 12:43:41 +0000 |
---|---|---|
committer | Will Holley <willholley@gmail.com> | 2019-12-16 11:10:35 +0000 |
commit | 8a914ddb04cdbe15034c9cb18d2daa6c8d46f313 (patch) | |
tree | 9b1fcd691bbd3cb166587ba28da7cc9367639714 | |
parent | 789ffbc3ef0f05a87539df84e4b23acbbc3215b1 (diff) | |
download | couchdb-8a914ddb04cdbe15034c9cb18d2daa6c8d46f313.tar.gz |
Sanitize `ERL_FLAGS` in remsh
If an environment uses `ERL_FLAGS` to configure CouchDB it can
conflict with the parameters passed to `erl` in `remsh`. This was
observed in a containerized CouchDB cluster, as the CouchDB
Dockerfile uses `ERL_FLAGS` to set the node name and cookie, as does
the Helm chart.
When running `remsh` in these containers, additional
`-name` and `-setcookie` parameters were silently added to
the `erl` invocation, preventing the shell from connecting to the
CouchDB node.
This commit scrubs any `-name` or `-setcookie` flags from ERL_FLAGS
before invoking erl.
-rwxr-xr-x | rel/overlay/bin/remsh | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/rel/overlay/bin/remsh b/rel/overlay/bin/remsh index 963c16a10..2d28a8c85 100755 --- a/rel/overlay/bin/remsh +++ b/rel/overlay/bin/remsh @@ -71,6 +71,10 @@ if [ ! -z "$VERBOSE" ]; then set -x fi -exec "$BINDIR/erl" -boot "$ROOTDIR/releases/$APP_VSN/start_clean" \ +# If present, strip -name or -setcookie from ERL_FLAGS +# to avoid conflicts with the cli parameters +ERL_FLAGS_CLEAN=$(echo "$ERL_FLAGS" | sed 's/-setcookie \([^ ][^ ]*\)//g' | sed 's/-name \([^ ][^ ]*\)//g') + +exec env ERL_FLAGS="$ERL_FLAGS_CLEAN" "$BINDIR/erl" -boot "$ROOTDIR/releases/$APP_VSN/start_clean" \ -name remsh$$@$LHOST -remsh $NODE -hidden -setcookie $COOKIE \ "$@" |