Fix handling of "allow fds" state.
Didn't take into account nesting of bundles. Boo.
Change-Id: Ic8cf21ad8d6f4938a3e105128624c9d162310d01
diff --git a/include/binder/Parcel.h b/include/binder/Parcel.h
index d973785..3fa2acb 100644
--- a/include/binder/Parcel.h
+++ b/include/binder/Parcel.h
@@ -59,7 +59,8 @@
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 9552c1c..608877e 100644
--- a/libs/binder/Parcel.cpp
+++ b/libs/binder/Parcel.cpp
@@ -447,13 +447,20 @@
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) {