diff options
author | Marco Nelissen <marcone@google.com> | 2018-06-19 12:38:23 -0700 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2018-06-21 00:58:05 +0000 |
commit | 83f827e7d55d5a2bdf4bc01ad9e5cf960b1ccc20 (patch) | |
tree | c81e19fa4bcf882c443a07c1f677ebcd1911a117 | |
parent | 2990141035d87028a7d31d8b0c3fbebc25fc2772 (diff) | |
download | base-83f827e7d55d5a2bdf4bc01ad9e5cf960b1ccc20.tar.gz |
Fix race condition in MediaHTTPConnection
getSize() and getMIMEType() rely on seekTo() having completed.
If seekTo() was called on a different thread, for example because
NuCachedSource2 was doing reads on a background thread, getSize()
could return -1 if it was called after connection was established,
but before the response had been parsed.
Bug: 110230427
Test: manual
Change-Id: I469b47e025f1c7a7ef3123d3347668f0541e6f2d
(cherry picked from commit d4f64f27b0de1c5d21c93b4d73acd05ede28fde2)
-rw-r--r-- | media/java/android/media/MediaHTTPConnection.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java index aae1f517eeaf..6bf52bdb60d3 100644 --- a/media/java/android/media/MediaHTTPConnection.java +++ b/media/java/android/media/MediaHTTPConnection.java @@ -323,8 +323,10 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { StrictMode.setThreadPolicy(policy); try { - if (offset != mCurrentOffset) { - seekTo(offset); + synchronized(this) { + if (offset != mCurrentOffset) { + seekTo(offset); + } } int n = mInputStream.read(data, 0, size); @@ -366,7 +368,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { } @Override - public long getSize() { + public synchronized long getSize() { if (mConnection == null) { try { seekTo(0); @@ -379,7 +381,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub { } @Override - public String getMIMEType() { + public synchronized String getMIMEType() { if (mConnection == null) { try { seekTo(0); |