diff options
author | Andreas Gohr <andi@splitbrain.org> | 2007-08-19 23:18:29 +0200 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2007-08-19 23:18:29 +0200 |
commit | 1a9ae8e52e2e72a094e36efc5cb586c4858ba9d1 (patch) | |
tree | bee5ee2b2aa6da6c51ed619ac2e379b3235d7e01 | |
parent | f6547e5d2c62a7ac418a7be702b3ad24a068b009 (diff) | |
download | rpg-1a9ae8e52e2e72a094e36efc5cb586c4858ba9d1.tar.gz rpg-1a9ae8e52e2e72a094e36efc5cb586c4858ba9d1.tar.bz2 |
quote fix in auth_nameencode
darcs-hash:20070819211829-7ad00-7f2dbd3d7ad6b4568b8f34209fbcffda6e110f4c.gz
-rw-r--r-- | _test/cases/inc/auth_nameencode.test.php | 6 | ||||
-rw-r--r-- | inc/auth.php | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/_test/cases/inc/auth_nameencode.test.php b/_test/cases/inc/auth_nameencode.test.php index 1e29b77fd..28ab6dc4a 100644 --- a/_test/cases/inc/auth_nameencode.test.php +++ b/_test/cases/inc/auth_nameencode.test.php @@ -16,6 +16,12 @@ class auth_nameencode_test extends UnitTestCase { $this->assertEqual(auth_nameencode($in),$out); } + function test_quote(){ + $in = 'hey"you'; + $out = 'hey%22you'; + $this->assertEqual(auth_nameencode($in),$out); + } + function test_complex(){ $in = 'hey $ you !$%! foo '; $out = 'hey%20%24%20you%20%21%24%25%21%20foo%20'; diff --git a/inc/auth.php b/inc/auth.php index 79e5513e4..045ced066 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -455,10 +455,10 @@ function auth_nameencode($name,$skip_group=false){ if (!isset($cache[$name][$skip_group])) { if($skip_group && $name{0} =='@'){ $cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', - "'%'.dechex(ord('\\1'))",substr($name,1)); + "'%'.dechex(ord(substr('\\1',-1)))",substr($name,1)); }else{ $cache[$name][$skip_group] = preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', - "'%'.dechex(ord('\\1'))",$name); + "'%'.dechex(ord(substr('\\1',-1)))",$name); } } |