diff --git a/include/binder/Parcel.h b/include/binder/Parcel.h index d9737852d..3fa2acbda 100644 --- a/include/binder/Parcel.h +++ b/include/binder/Parcel.h @@ -59,7 +59,8 @@ public: status_t appendFrom(const Parcel *parcel, size_t start, size_t len); - bool setAllowFds(bool allowFds); + bool pushAllowFds(bool allowFds); + void restoreAllowFds(bool lastValue); bool hasFileDescriptors() const; diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 9552c1cfc..608877eb7 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -447,13 +447,20 @@ status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len) return err; } -bool Parcel::setAllowFds(bool allowFds) +bool Parcel::pushAllowFds(bool allowFds) { const bool origValue = mAllowFds; - mAllowFds = allowFds; + if (!allowFds) { + mAllowFds = false; + } return origValue; } +void Parcel::restoreAllowFds(bool lastValue) +{ + mAllowFds = lastValue; +} + bool Parcel::hasFileDescriptors() const { if (!mFdsKnown) {