Better policies to handle possible errors in remote MIME type values; avoid crashes...
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / files / services / FileUploader.java
index 5d748c9..2da5992 100644 (file)
@@ -167,10 +167,18 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
         Log.d(TAG, "Will upload " + mTotalDataToSend + " bytes, with " + mLocalPaths.length + " files");
         
         for (int i = 0; i < mLocalPaths.length; ++i) {
         Log.d(TAG, "Will upload " + mTotalDataToSend + " bytes, with " + mLocalPaths.length + " files");
         
         for (int i = 0; i < mLocalPaths.length; ++i) {
-            String mimeType = MimeTypeMap.getSingleton()
-                    .getMimeTypeFromExtension(
-                            mLocalPaths[i].substring(mLocalPaths[i]
+            
+            String mimeType;
+            try {
+                mimeType = MimeTypeMap.getSingleton()
+                        .getMimeTypeFromExtension(
+                                mLocalPaths[i].substring(mLocalPaths[i]
                                     .lastIndexOf('.') + 1));
                                     .lastIndexOf('.') + 1));
+            } catch (IndexOutOfBoundsException e) {
+                Log.e(TAG, "Trying to find out MIME type of a file without extension: " + mLocalPaths[i]);
+                mimeType = "application/octet-stream";
+            }
+            
             mResult = false;
             mCurrentIndexUpload = i;
             if (wc.putFile(mLocalPaths[i], mRemotePaths[i], mimeType)) {
             mResult = false;
             mCurrentIndexUpload = i;
             if (wc.putFile(mLocalPaths[i], mRemotePaths[i], mimeType)) {