thumb.php: Escape $rel404 in error message
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 28 Apr 2015 05:51:25 +0000 (06:51 +0100)
committerChad Horohoe <chadh@wikimedia.org>
Tue, 11 Aug 2015 14:17:09 +0000 (07:17 -0700)
Bug: T97391
Change-Id: I363686732fe9e5636c85c267c0728fc872c3e39d

thumb.php

index 12173c5..25bca87 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -163,7 +163,7 @@ function wfStreamThumb( array $params ) {
 
        // Check if the file is hidden
        if ( $img->isDeleted( File::DELETED_FILE ) ) {
-               wfThumbError( 404, "The source file '$fileName' does not exist." );
+               wfThumbErrorText( 404, "The source file '$fileName' does not exist." );
                return;
        }
 
@@ -218,10 +218,10 @@ function wfStreamThumb( array $params ) {
                }
 
                // If its not a redirect that has a target as a local file, give 404.
-               wfThumbError( 404, "The source file '$fileName' does not exist." );
+               wfThumbErrorText( 404, "The source file '$fileName' does not exist." );
                return;
        } elseif ( $img->getPath() === false ) {
-               wfThumbError( 500, "The source file '$fileName' is not locally accessible." );
+               wfThumbErrorText( 500, "The source file '$fileName' is not locally accessible." );
                return;
        }
 
@@ -283,7 +283,7 @@ function wfStreamThumb( array $params ) {
                        }
                        return;
                } else {
-                       wfThumbError( 404, "The given path of the specified thumbnail is incorrect;
+                       wfThumbErrorText( 404, "The given path of the specified thumbnail is incorrect;
                                expected '" . $img->getThumbRel( $thumbName ) . "' but got '" .
                                rawurldecode( $rel404 ) . "'." );
                        return;
@@ -546,14 +546,26 @@ function wfExtractThumbParams( $file, $params ) {
        return null;
 }
 
+
+/**
+ * Output a thumbnail generation error message
+ *
+ * @param int $status
+ * @param string $msg Plain text (will be html escaped)
+ * @return void
+ */
+function wfThumbErrorText( $status, $msgText ) {
+       return wfThumbError( $status, htmlspecialchars( $msgText ) );
+}
+
 /**
  * Output a thumbnail generation error message
  *
  * @param int $status
- * @param string $msg HTML
+ * @param string $msgHtml HTML
  * @return void
  */
-function wfThumbError( $status, $msg ) {
+function wfThumbError( $status, $msgHtml ) {
        global $wgShowHostnames;
 
        header( 'Cache-Control: no-cache' );
@@ -585,7 +597,7 @@ function wfThumbError( $status, $msg ) {
 <body>
 <h1>Error generating thumbnail</h1>
 <p>
-$msg
+$msgHtml
 </p>
 $debug
 </body>