瀏覽代碼

Fix security issue when importing accounts

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 6 年之前
父節點
當前提交
6806a43fe5
共有 1 個文件被更改,包括 25 次插入15 次删除
  1. 25 15
      app/src/main/java/com/nextcloud/talk/utils/AccountUtils.java

+ 25 - 15
app/src/main/java/com/nextcloud/talk/utils/AccountUtils.java

@@ -56,22 +56,27 @@ public class AccountUtils {
             for (int i = 0; i < userEntitiesList.size(); i++) {
             for (int i = 0; i < userEntitiesList.size(); i++) {
                 internalUserEntity = userEntitiesList.get(i);
                 internalUserEntity = userEntitiesList.get(i);
                 importAccount = getInformationFromAccount(account);
                 importAccount = getInformationFromAccount(account);
-                if (importAccount.getBaseUrl().startsWith("http://") ||
-                        importAccount.getBaseUrl().startsWith("https://")) {
-                    if (internalUserEntity.getUsername().equals(importAccount.getUsername()) &&
-                            internalUserEntity.getBaseUrl().equals(importAccount.getBaseUrl())) {
-                        accountFound = true;
-                        break;
+                if (importAccount.getToken() != null) {
+                    if (importAccount.getBaseUrl().startsWith("http://") ||
+                            importAccount.getBaseUrl().startsWith("https://")) {
+                        if (internalUserEntity.getUsername().equals(importAccount.getUsername()) &&
+                                internalUserEntity.getBaseUrl().equals(importAccount.getBaseUrl())) {
+                            accountFound = true;
+                            break;
+                        }
+                    } else {
+                        if (internalUserEntity.getUsername().equals(importAccount.getUsername()) &&
+                                (internalUserEntity.getBaseUrl().equals("http://" + importAccount.getBaseUrl()) ||
+                                        internalUserEntity.getBaseUrl().equals("https://" +
+                                                importAccount.getBaseUrl()))) {
+                            accountFound = true;
+                            break;
+                        }
+
                     }
                     }
                 } else {
                 } else {
-                    if (internalUserEntity.getUsername().equals(importAccount.getUsername()) &&
-                            (internalUserEntity.getBaseUrl().equals("http://" + importAccount.getBaseUrl()) ||
-                                    internalUserEntity.getBaseUrl().equals("https://" +
-                                            importAccount.getBaseUrl()))) {
-                        accountFound = true;
-                        break;
-                    }
-
+                    accountFound = true;
+                    break;
                 }
                 }
             }
             }
 
 
@@ -105,7 +110,12 @@ public class AccountUtils {
         Context context = NextcloudTalkApplication.getSharedApplication().getApplicationContext();
         Context context = NextcloudTalkApplication.getSharedApplication().getApplicationContext();
         final AccountManager accMgr = AccountManager.get(context);
         final AccountManager accMgr = AccountManager.get(context);
 
 
-        String password = accMgr.getPassword(account);
+        String password = null;
+        try {
+            password = accMgr.getPassword(account);
+        } catch (Exception exception) {
+            Log.e(TAG, "Failed to import account");
+        }
 
 
         if (urlString.endsWith("/")) {
         if (urlString.endsWith("/")) {
             urlString = urlString.substring(0, urlString.length() - 1);
             urlString = urlString.substring(0, urlString.length() - 1);