diff options
author | James Dong <jdong@google.com> | 2011-02-22 12:34:02 -0800 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-02-22 12:34:02 -0800 |
commit | bafa7eaccb4eb402b9719f9553be74332f158756 (patch) | |
tree | df4cebfc4fd4d9af8e5d20716e030d2d028ddf00 | |
parent | 2fad616237ce2db020eb6c0e03084ece291aee3c (diff) | |
download | frameworks_base-bafa7eaccb4eb402b9719f9553be74332f158756.zip frameworks_base-bafa7eaccb4eb402b9719f9553be74332f158756.tar.gz frameworks_base-bafa7eaccb4eb402b9719f9553be74332f158756.tar.bz2 |
Check file descriptor before passing it through binder calls
bug - 3476613
Change-Id: I858933fd2fe4c095c0bd58bf50344c47fc104be9
-rw-r--r-- | media/libmedia/mediarecorder.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
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); |