diff options
author | Chong Zhang <chz@google.com> | 2015-05-19 10:56:40 -0700 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2015-05-19 16:50:30 -0700 |
commit | 11ad1b8bec5f8daa10ec023153e95eba46a4fbff (patch) | |
tree | 02879a5bba582a747c55291d32e0cba13bc84863 | |
parent | f569d0a3d43cb591eecbc96020cbbac059f9aefb (diff) | |
download | frameworks_av-11ad1b8bec5f8daa10ec023153e95eba46a4fbff.zip frameworks_av-11ad1b8bec5f8daa10ec023153e95eba46a4fbff.tar.gz frameworks_av-11ad1b8bec5f8daa10ec023153e95eba46a4fbff.tar.bz2 |
stagefright: don't use stale pointer after disconnecting NuCachedSource2
bug: 20858729
Change-Id: I7d680accb43a4aa08620acd96659b97e80d1a5e8
-rw-r--r-- | media/libstagefright/NuCachedSource2.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/media/libstagefright/NuCachedSource2.cpp b/media/libstagefright/NuCachedSource2.cpp index 1c53b40..f82636b 100644 --- a/media/libstagefright/NuCachedSource2.cpp +++ b/media/libstagefright/NuCachedSource2.cpp @@ -583,6 +583,13 @@ ssize_t NuCachedSource2::readInternal(off64_t offset, void *data, size_t size) { Mutex::Autolock autoLock(mLock); + // If we're disconnecting, return EOS and don't access *data pointer. + // data could be on the stack of the caller to NuCachedSource2::readAt(), + // which may have exited already. + if (mDisconnecting) { + return ERROR_END_OF_STREAM; + } + if (!mFetching) { mLastAccessPos = offset; restartPrefetcherIfNecessary_l( |