diff --git a/opentrafficshaper/utils.pm b/opentrafficshaper/utils.pm index 0a0b338a2a75ba0235d3240c5791389f446aca2d..9252ae17beb877a4545f0bbe9f2f3300418921b4 100644 --- a/opentrafficshaper/utils.pm +++ b/opentrafficshaper/utils.pm @@ -92,10 +92,18 @@ sub parseFormContent # Split information into name/value pairs my @pairs = split(/&/, $data); foreach my $pair (@pairs) { + # Spaces are represented by +'s + $pair =~ tr/+/ /; + # Split off name value pairs my ($name, $value) = split(/=/, $pair); - $value =~ tr/+/ /; - $value =~ s/%(..)/pack("C", hex($1))/eg; - $res{$name} = $value; + # Unescape name value pair + $name =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; + $value =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; + # Cleanup... + $name =~ s/[^0-9A-Za-z\[\]\.]/_/g; + # Add to hash + $res{$name}->{'value'} = $value; + push(@{$res{$name}->{'values'}},$value); } return \%res;