From 5df9f462f83185c134883181b74b0595bfcfe29c Mon Sep 17 00:00:00 2001 From: Jens Frank Date: Mon, 9 Aug 2004 21:37:27 +0000 Subject: [PATCH] Fix for Bug [ 720843 ]: Replace invalid chars in uploaded file names instead of cutting off the end of the string --- includes/SpecialUpload.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/includes/SpecialUpload.php b/includes/SpecialUpload.php index f95717e5dd..f9e5365a31 100644 --- a/includes/SpecialUpload.php +++ b/includes/SpecialUpload.php @@ -92,9 +92,11 @@ class UploadForm { if ( "" != $this->mOname ) { $basename = strrchr( $this->mOname, "/" ); + if ( false === $basename ) { $basename = $this->mOname; } else ( $basename = substr( $basename, 1 ) ); + $ext = strrchr( $basename, "." ); if ( false === $ext ) { $ext = ""; } else { $ext = substr( $ext, 1 ); } @@ -106,6 +108,16 @@ class UploadForm { $this->mainUploadForm( WfMsg( "minlength" ) ); return; } + + $changed_name = false; + $bn = preg_replace ( "/[^".Title::legalChars()."]/", '-', $basename ); + if ( 0 != strcmp( $bn, $basename ) ) + { + $changed_name = true; + $basename = $bn; + } + + $nt = Title::newFromText( $basename ); if( !$nt ) { return $this->uploadError( wfMsg( "illegalfilename", htmlspecialchars( $basename ) ) ); @@ -126,7 +138,7 @@ class UploadForm { if ( ! $this->mIgnoreWarning ) { $warning = ''; - if( 0 != strcmp( ucfirst( $basename ), $this->mUploadSaveName ) ) { + if( $changed_name || 0 != strcmp( ucfirst( $basename ), $this->mUploadSaveName ) ) { $warning .= '
  • '.wfMsg( "badfilename", htmlspecialchars( $this->mUploadSaveName ) ).'
  • '; } -- 2.20.1