From f1d985081cff2a6aa2397c5341da8432db753211 Mon Sep 17 00:00:00 2001 From: James Dong Date: Tue, 22 Feb 2011 12:34:02 -0800 Subject: Check file descriptor before passing it through binder calls bug - 3476613 Change-Id: I858933fd2fe4c095c0bd58bf50344c47fc104be9 --- media/libmedia/mediarecorder.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'media/libmedia/mediarecorder.cpp') diff --git a/media/libmedia/mediarecorder.cpp b/media/libmedia/mediarecorder.cpp index fd575fe..0100a17 100644 --- a/media/libmedia/mediarecorder.cpp +++ b/media/libmedia/mediarecorder.cpp @@ -298,6 +298,17 @@ status_t MediaRecorder::setOutputFile(int fd, int64_t offset, int64_t length) return INVALID_OPERATION; } + // It appears that if an invalid file descriptor is passed through + // binder calls, the server-side of the inter-process function call + // is skipped. As a result, the check at the server-side to catch + // the invalid file descritpor never gets invoked. This is to workaround + // this issue by checking the file descriptor first before passing + // it through binder call. + if (fd < 0) { + LOGE("Invalid file descriptor: %d", fd); + return BAD_VALUE; + } + status_t ret = mMediaRecorder->setOutputFile(fd, offset, length); if (OK != ret) { LOGV("setOutputFile failed: %d", ret); -- cgit v1.1