Fix possible leak in Parcel::writeDupFileDescriptor.

Also, check the result of dup() just in case we got EMFILE
or something.

Change-Id: I18e627bd84f4c7941813fe1c2bad2cdd9e5afa83
This commit is contained in:
Jeff Brown 2011-11-04 20:19:33 -07:00
parent be37dde787
commit d341c7178f
1 changed files with 9 additions and 1 deletions

View File

@ -722,7 +722,15 @@ status_t Parcel::writeFileDescriptor(int fd, bool takeOwnership)
status_t Parcel::writeDupFileDescriptor(int fd)
{
return writeFileDescriptor(dup(fd), true /*takeOwnership*/);
int dupFd = dup(fd);
if (dupFd < 0) {
return -errno;
}
status_t err = writeFileDescriptor(dupFd, true /*takeOwnership*/);
if (err) {
close(dupFd);
}
return err;
}
status_t Parcel::writeBlob(size_t len, WritableBlob* outBlob)