summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2007-08-19 23:18:29 +0200
committerAndreas Gohr <andi@splitbrain.org>2007-08-19 23:18:29 +0200
commit1a9ae8e52e2e72a094e36efc5cb586c4858ba9d1 (patch)
treebee5ee2b2aa6da6c51ed619ac2e379b3235d7e01
parentf6547e5d2c62a7ac418a7be702b3ad24a068b009 (diff)
downloadrpg-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.php6
-rw-r--r--inc/auth.php4
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);
}
}