Fix FD ownership for local FileSource
PlayerServiceFileSource took ownership of the GenericSource's FD and
closed it if extraction failed, causing a SIGABRT from fdsan. Fix this
by dup'ing the FD before passing to PlayerServiceFileSource.
Bug: 160136562
Bug: 159810405
Test: manually tested SIGABRT disappears after this change
Change-Id: I3f1f5daadba27bc75e2b550884d7bba559d6f2e7
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
index e6bb2e1..439dbe8 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
@@ -432,7 +432,7 @@
}
if (mDataSource == nullptr) {
ALOGD("FileSource local");
- mDataSource = new PlayerServiceFileSource(mFd.get(), mOffset, mLength);
+ mDataSource = new PlayerServiceFileSource(dup(mFd.get()), mOffset, mLength);
}
}