Actually fix bug #20706 - Next time I will read more carefully and test more thouroug...
[lhc/web/wiklou.git] / includes / DjVuImage.php
index 406878d..75df0fd 100644 (file)
@@ -250,6 +250,15 @@ class DjVuImage {
                        $txt = wfShellExec( $cmd, $retval );
                        wfProfileOut( 'djvutxt' );
                        if( $retval == 0) {
+                               # Get rid of invalid UTF-8, strip control characters
+                               if( is_callable( 'iconv' ) ) {
+                                       wfSuppressWarnings();
+                                       $txt = iconv( "UTF-8","UTF-8//IGNORE", $txt );
+                                       wfRestoreWarnings();
+                               } else {
+                                       $txt = UtfNormal::cleanUp( $txt );
+                               }
+                               $txt = preg_replace( "/[\013\035\037]/", "", $txt );
                                $txt = htmlspecialchars($txt);
                                $txt = preg_replace( "/\((page\s[\d-]*\s[\d-]*\s[\d-]*\s[\d-]*\s*\&quot;([^<]*?)\&quot;\s*|)\)/s", "<PAGE value=\"$2\" />", $txt  );
                                $txt = "<DjVuTxt>\n<HEAD></HEAD>\n<BODY>\n" . $txt . "</BODY>\n</DjVuTxt>\n";