From f8549f1b1b52594216024a032b2c05974f33c33d Mon Sep 17 00:00:00 2001 From: Alain Reguera Delgado Date: May 04 2011 00:52:39 +0000 Subject: Update cli_doParseArgumentsReDef: - Sanitate option arguments before process them. Be sure that no option argument does contain any single quote (U+0027) inside; that would break option parsing. Remember that we are using single quotes to enclose option arguments in order to let getopt to interpret option arguments with spaces inside. To solve this issue, we replace all single quotes in the arguments list with their respective codification and reverse the process back when doPrint them out. --- diff --git a/Scripts/Functions/cli_doParseArgumentsReDef.sh b/Scripts/Functions/cli_doParseArgumentsReDef.sh index edf1c62..f493024 100755 --- a/Scripts/Functions/cli_doParseArgumentsReDef.sh +++ b/Scripts/Functions/cli_doParseArgumentsReDef.sh @@ -1,7 +1,8 @@ #!/bin/bash # -# cli_doParseArgumentsReDef.sh -- This function initiates/reset -# positional parameters based on `$@' variable. +# cli_doParseArgumentsReDef.sh -- This function initiates/reset and +# sanitates positional parameters passed to this function and creates +# the the list of arguments that getopt will process. # # Copyright (C) 2009, 2010, 2011 The CentOS Project # @@ -35,7 +36,21 @@ function cli_doParseArgumentsReDef { # single quotes to enclose each argument (ARG) from command-line # idividually. for ARG in "$@"; do + + # Sanitate option arguments before process them. Be sure that + # no option argument does contain any single quote (U+0027) + # inside; that would break option parsing. Remember that we + # are using single quotes to enclose option arguments in order + # to let getopt to interpret option arguments with spaces + # inside. To solve this issue, we replace all single quotes + # in the arguments list with their respective codification and + # reverse the process back when doPrint them out. + ARG=$(echo $ARG | sed "s/'/0x27/g") + + # Concatenate arguments and encolose them to let getopt to + # process them when they have spaces inside. ARGUMENTS="$ARGUMENTS '$ARG'" + done }