[BusyBox] How to get parameter httpd.?

Simon Poole simon.armlinux at themalago.net
Wed May 11 09:19:04 UTC 2005


Martijn de Gouw wrote:
> function ParseQueryString {
>   if [ -n "$1" ]; then
>     for args in `echo "$1" | tr "&" " "`
>     do
>       param=`echo "$args" | cut -d "=" -f 1`
>       value=`echo "$args" | cut -d "=" -f 2`
>       eval "export FORM_${param}=${value}"
>     done
>   fi
> }
> 

I do something very similar, but also use a couple of little sed tricks 
to make it a bit more secure.  This works in Busybox ash and uses 
Busybox httpd for URL decoding:

ParseQueryString () {
	SAFE_STRING=$( echo "$1" | sed -e 's/"/\\"/g' )
         IFS="&"
         showpackagelist=false
         for param in $SAFE_STRING ; do
                 decparam=$(httpd -d "$param")
                 param_name=$(echo "${decparam%%=*}" | sed 
's/[^[:alnum:]_]/_/g')
                 param_value=$(echo "${decparam#*=}" | sed -e 
's/\\/\\\\/g' -e 's/"/\\"/g' )
                 eval "WWW_${param_name}=\"${param_value}\""
         done
         unset IFS
}




More information about the busybox mailing list