Fix information leakage by validating the URL scheme
[tweeper.git] / tweeper.php
index b1809ed..87efd60 100644 (file)
@@ -318,6 +318,12 @@ class Tweeper {
       return NULL;
     }
 
+    $scheme = $url["scheme"];
+    if (!in_array($scheme, array("http", "https"))) {
+      trigger_error("unsupported scheme: $scheme", E_USER_ERROR);
+      return NULL;
+    }
+
     // Strip the leading www. to be more forgiving on input URLs.
     $host = preg_replace('/^www\./', '', $url["host"]);
 
@@ -442,4 +448,8 @@ if (!isset($options['src_url'])) {
 }
 
 $tweeper = new Tweeper($options['generate_enclosure']);
-echo $tweeper->tweep($options['src_url']);
+$output = $tweeper->tweep($options['src_url']);
+if (is_null($output)) {
+  exit(1);
+}
+echo $output;