1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 16:06:08 +00:00

Filter only '/' character in user input when version of server is 8.1 or later

This commit is contained in:
masensio 2015-06-02 09:37:46 +02:00
parent e48aa9c304
commit 9fc332eef9
6 changed files with 43 additions and 16 deletions

View File

@ -51,6 +51,7 @@ import com.owncloud.android.lib.common.OwnCloudCredentialsFactory.OwnCloudAnonym
import com.owncloud.android.lib.common.accounts.AccountUtils;
import com.owncloud.android.lib.common.network.WebdavUtils;
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
public class OwnCloudClient extends HttpClient {
@ -68,6 +69,8 @@ public class OwnCloudClient extends HttpClient {
private Uri mBaseUri;
private OwnCloudVersion mVersion = null;
/**
* Constructor
*/
@ -436,4 +439,12 @@ public class OwnCloudClient extends HttpClient {
}
public void setOwnCloudVersion(String version){
OwnCloudVersion ver = new OwnCloudVersion(version);
mVersion = ver;
}
public OwnCloudVersion getOwnCloudVersion(){
return mVersion;
}
}

View File

@ -24,7 +24,6 @@
package com.owncloud.android.lib.resources.files;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.jackrabbit.webdav.client.methods.MkColMethod;
import com.owncloud.android.lib.common.OwnCloudClient;
@ -73,7 +72,8 @@ public class CreateRemoteFolderOperation extends RemoteOperation {
@Override
protected RemoteOperationResult run(OwnCloudClient client) {
RemoteOperationResult result = null;
boolean noInvalidChars = FileUtils.isValidPath(mRemotePath);
boolean noInvalidChars = FileUtils.isValidPath(mRemotePath,
client.getOwnCloudVersion().isVersionWithForbiddenCharacters());
if (noInvalidChars) {
result = createFolder(client);
if (!result.isSuccess() && mCreateFullPath &&

View File

@ -27,9 +27,12 @@ package com.owncloud.android.lib.resources.files;
import java.io.File;
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.lib.resources.status.OwnCloudVersion;
public class FileUtils {
private static final String TAG = FileUtils.class.getSimpleName();
public static final String PATH_SEPARATOR = "/";
@ -40,39 +43,44 @@ public class FileUtils {
}
/**
* Validate the fileName to detect if contains any forbidden character: / , \ , < , > , : , " , | , ? , *
* Validate the fileName to detect if contains any forbidden character: / , \ , < , > ,
* : , " , | , ? , *
* @param fileName
* @param versionSupportsForbiddenChars
* @return
*/
public static boolean isValidName(String fileName) {
public static boolean isValidName(String fileName, boolean versionSupportsForbiddenChars) {
boolean result = true;
Log_OC.d("FileUtils", "fileName =======" + fileName);
if (fileName.contains(PATH_SEPARATOR) ||
Log_OC.d(TAG, "fileName =======" + fileName);
if ( (versionSupportsForbiddenChars && fileName.contains(PATH_SEPARATOR)) ||
(!versionSupportsForbiddenChars && ( fileName.contains(PATH_SEPARATOR) ||
fileName.contains("\\") || fileName.contains("<") || fileName.contains(">") ||
fileName.contains(":") || fileName.contains("\"") || fileName.contains("|") ||
fileName.contains("?") || fileName.contains("*")) {
fileName.contains("?") || fileName.contains("*") ) ) ) {
result = false;
}
return result;
}
/**
* Validate the path to detect if contains any forbidden character: \ , < , > , : , " , | , ? , *
* Validate the path to detect if contains any forbidden character: \ , < , > , : , " , | ,
* ? , *
* @param path
* @return
*/
public static boolean isValidPath(String path) {
public static boolean isValidPath(String path, boolean versionSupportsForbidenChars) {
boolean result = true;
Log_OC.d("FileUtils", "path ....... " + path);
if (path.contains("\\") || path.contains("<") || path.contains(">") ||
Log_OC.d(TAG, "path ....... " + path);
if (!versionSupportsForbidenChars &&
(path.contains("\\") || path.contains("<") || path.contains(">") ||
path.contains(":") || path.contains("\"") || path.contains("|") ||
path.contains("?") || path.contains("*")) {
path.contains("?") || path.contains("*") ) ){
result = false;
}
return result;
}
}

View File

@ -89,7 +89,8 @@ public class MoveRemoteFileOperation extends RemoteOperation {
protected RemoteOperationResult run(OwnCloudClient client) {
/// check parameters
if (!FileUtils.isValidPath(mTargetRemotePath)) {
if (!FileUtils.isValidPath(mTargetRemotePath,
client.getOwnCloudVersion().isVersionWithForbiddenCharacters())) {
return new RemoteOperationResult(ResultCode.INVALID_CHARACTER_IN_NAME);
}

View File

@ -89,7 +89,8 @@ public class RenameRemoteFileOperation extends RemoteOperation {
LocalMoveMethod move = null;
boolean noInvalidChars = FileUtils.isValidPath(mNewRemotePath);
boolean noInvalidChars = FileUtils.isValidPath(mNewRemotePath,
client.getOwnCloudVersion().isVersionWithForbiddenCharacters());
if (noInvalidChars) {
try {

View File

@ -39,6 +39,8 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
public static final int MINIMUM_VERSION_FOR_SHARING_API = 0x05001B00; // 5.0.27
public static final int MINIMUM_VERSION_WITH_FORBIDDEN_CHARS = 0x08010000; // 8.1
private static final int MAX_DOTS = 3;
// format is in version
@ -121,5 +123,9 @@ public class OwnCloudVersion implements Comparable<OwnCloudVersion> {
return (mVersion >= MINIMUM_VERSION_FOR_SHARING_API);
}
public boolean isVersionWithForbiddenCharacters() {
return (mVersion >= MINIMUM_VERSION_WITH_FORBIDDEN_CHARS);
}
}