Catch FolderSync sync key errors in account validation

* I have no idea how this can happen, but our misconfigured Ex2010
  server is generating a "bad sync key" error in this circumstance,
  and it's causing a crash.

Bug: 5103532
Change-Id: Ib7ff37cdd29087af4de4c0353e9b1b1980ebf648
diff --git a/src/com/android/exchange/adapter/FolderSyncParser.java b/src/com/android/exchange/adapter/FolderSyncParser.java
index c05ed1b..9ba3697 100644
--- a/src/com/android/exchange/adapter/FolderSyncParser.java
+++ b/src/com/android/exchange/adapter/FolderSyncParser.java
@@ -17,6 +17,14 @@
 
 package com.android.exchange.adapter;
 
+import android.content.ContentProviderOperation;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.content.OperationApplicationException;
+import android.database.Cursor;
+import android.os.RemoteException;
+import android.text.TextUtils;
+
 import com.android.emailcommon.provider.Account;
 import com.android.emailcommon.provider.EmailContent;
 import com.android.emailcommon.provider.EmailContent.AccountColumns;
@@ -31,14 +39,6 @@
 import com.android.exchange.ExchangeService;
 import com.android.exchange.provider.MailboxUtilities;
 
-import android.content.ContentProviderOperation;
-import android.content.ContentUris;
-import android.content.ContentValues;
-import android.content.OperationApplicationException;
-import android.database.Cursor;
-import android.os.RemoteException;
-import android.text.TextUtils;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
@@ -146,8 +146,11 @@
                 status = getValueInt();
                 if (status != Eas.FOLDER_STATUS_OK) {
                     mService.errorLog("FolderSync failed: " + CommandStatus.toString(status));
+                    // If the account hasn't been saved, this is a validation attempt, so we don't
+                    // try reloading the folder list...
                     if (CommandStatus.isDeniedAccess(status) ||
-                            CommandStatus.isNeedsProvisioning(status)) {
+                            CommandStatus.isNeedsProvisioning(status) ||
+                            (mAccount.mId == Account.NOT_SAVED)) {
                         throw new CommandStatusException(status);
                     // Note that we need to catch both old-style (Eas.FOLDER_STATUS_INVALID_KEY)
                     // and EAS 14 style command status