diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php
index 45448279fa161d46137c2bddee952060eaa6a584..cb0bec399d108fb094f0faccda8b897588d9a564 100644
--- a/apps/files/ajax/rename.php
+++ b/apps/files/ajax/rename.php
@@ -12,7 +12,7 @@ $file = stripslashes($_GET["file"]);
 $newname = stripslashes($_GET["newname"]);
 
 // Delete
-if( OC_Files::move( $dir, $file, $dir, $newname )) {
+if( $newname !== '.' and OC_Files::move( $dir, $file, $dir, $newname )) {
 	OCP\JSON::success(array("data" => array( "dir" => $dir, "file" => $file, "newname" => $newname )));
 }
 else{
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 33f35eee6c50a4220c40def90f9828b368b63e06..fc37e03ba49bb7cb306bebe195337c105ac9c39d 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -149,7 +149,7 @@ var FileList={
 			event.stopPropagation();
 			event.preventDefault();
 			var newname=input.val();
-			if (Files.containsInvalidCharacters(newname)) {
+			if (!Files.isFileNameValid(newname)) {
 				return false;
 			}
 			if (newname != name) {
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 6166b240e83303d732507ba6d3d7c5d2612a3004..ac47f390826ad0abadeaa9bbda2ea131f61ee750 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -26,16 +26,26 @@ Files={
 		});
 		procesSelection();
 	},
-	containsInvalidCharacters:function (name) {
+    isFileNameValid:function (name) {
+        if (name === '.') {
+            OC.Notification.show(t('files', "'.' is an invalid file name."));
+            return false;
+        }
+        if (name.length == 0) {
+            OC.Notification.show(t('files', "File name cannot be empty."));
+            return false;
+        }
+
+        // check for invalid characters
 		var invalid_characters = ['\\', '/', '<', '>', ':', '"', '|', '?', '*'];
 		for (var i = 0; i < invalid_characters.length; i++) {
 			if (name.indexOf(invalid_characters[i]) != -1) {
 				OC.Notification.show(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed."));
-				return true;
+				return false;
 			}
 		}
         OC.Notification.hide();
-		return false;
+		return true;
 	},
     displayStorageWarnings: function() {
         var usedSpacePercent = $('#usedSpacePercent').val();
@@ -510,7 +520,7 @@ $(document).ready(function() {
 		$(this).append(input);
 		input.focus();
 		input.change(function(){
-			if (type != 'web' && Files.containsInvalidCharacters($(this).val())) {
+			if (type != 'web' && !Files.isFileNameValid($(this).val())) {
 				return;
 			} else if( type == 'folder' && $('#dir').val() == '/' && $(this).val() == 'Shared') {
                 OC.Notification.show(t('files','Invalid folder name. Usage of "Shared" is reserved by Owncloud'));