]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
decided to validate tag uris rather than not validating any uris
authorEvan Prodromou <evan@prodromou.name>
Thu, 5 Jun 2008 04:01:53 +0000 (00:01 -0400)
committerEvan Prodromou <evan@prodromou.name>
Thu, 5 Jun 2008 04:01:53 +0000 (00:01 -0400)
darcs-hash:20080605040153-84dde-5d180f0d8ead2fc7c5eaca3deaf035ba31d3512a.gz

actions/userauthorization.php
lib/util.php

index a6dc2a5b07780b326d810b2530dc466a05df529b..0d3b71ac98b76967ee5bc28a88b6d680eb8dedbb 100644 (file)
@@ -365,6 +365,10 @@ class UserauthorizationAction extends Action {
                        throw new OAuthException("Listener URI '$listener' not found here");
                }
                $listenee = $req->get_parameter('omb_listenee');
+               if (!Validate::uri($listenee) &&
+                       !common_valid_tag($listenee)) {
+                       throw new OAuthException("Listenee URI '$listenee' not a recognizable URI");
+               }
                if (strlen($listenee) > 255) {
                        throw new OAuthException("Listenee URI '$listenee' too long");
                }
index 03b1e42a90ed2fea685c6533a0302bb5461f92c1..771a4880c6220582a3e388eebf8772ba7317f041 100644 (file)
@@ -598,3 +598,11 @@ function common_debug($msg, $filename=NULL) {
 function common_valid_http_url($url) {
        return Validate::uri($url, array('allowed_schemes' => array('http', 'https')));
 }
+
+function common_valid_tag($tag) {
+       if (preg_match('/^tag:(.*?),(\d{4}(-\d{2}(-\d{2})?)?):(.*)$/', $tag, $matches)) {
+               return (Validate::email($matches[1]) || 
+                               preg_match('/^([\w-\.]+)$/', $matches[1]));
+       }
+       return false;
+}