summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jin Seok Park <jinpark@google.com> 2020-07-27 11:23:14 +0900
committer Jin Seok Park <jinpark@google.com> 2020-07-27 12:43:19 +0900
commit5abacddfc3355905a3d15a3561d321f5ea62dcc2 (patch)
tree7c9747a2a1ed2575ee975ca4ddbbd90a43635de3
parentb19564f75cb6547348f1eaa39e36aee9f6215fe9 (diff)
Rename temp file to use a valid image file extension
MediaProvider added a restriction in R for apps targeting SDK 30 to not allow .tmp files in image file directories such as "Pictures" and "DCIM". This CL renames the temp file to avoid this restriction. Also added test to check for writing to FileDescriptor instances. Bug: 160874777 Test: atest CtsMediaTestCases:android.media.cts.ExifInterfaceTest Also tested with an image file inside /Pictures Change-Id: Iedb548651c0048b0aecc4b34e9c94f778cf5d1e0
-rw-r--r--media/java/android/media/ExifInterface.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index 4a6724a09c1e..0448919450f2 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -70,6 +70,7 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
+import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.CRC32;
@@ -2081,7 +2082,10 @@ public class ExifInterface {
try {
// Move the original file to temporary file.
if (mFilename != null) {
- tempFile = new File(mFilename + ".tmp");
+ String parent = originalFile.getParent();
+ String name = originalFile.getName();
+ String tempPrefix = UUID.randomUUID().toString() + "_";
+ tempFile = new File(parent, tempPrefix + name);
if (!originalFile.renameTo(tempFile)) {
throw new IOException("Couldn't rename to " + tempFile.getAbsolutePath());
}