Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f9e01ea4 authored by Brad Fitzpatrick's avatar Brad Fitzpatrick Committed by Android Git Automerger
Browse files

am efcf68aa: am ef8f96a7: Merge "Start of work on passing around StrictMode...

am efcf68aa: am ef8f96a7: Merge "Start of work on passing around StrictMode policy over Binder calls." into gingerbread

Merge commit 'efcf68aa1fd7fcfd52cf3d2837ed8db8e797194b'

* commit 'efcf68aa1fd7fcfd52cf3d2837ed8db8e797194b':
  Start of work on passing around StrictMode policy over Binder calls.
parents 60af8760 8e10e50f
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -41,6 +41,9 @@ public:
            int                 getCallingPid();
            int                 getCallingUid();

            void                setStrictModePolicy(int32_t policy);
            int32_t             getStrictModePolicy() const;
            
            int64_t             clearCallingIdentity();
            void                restoreCallingIdentity(int64_t token);
            
@@ -109,6 +112,7 @@ private:
            status_t            mLastError;
            pid_t               mCallingPid;
            uid_t               mCallingUid;
            int32_t             mStrictModePolicy;
};

}; // namespace android
+4 −1
Original line number Diff line number Diff line
@@ -56,7 +56,10 @@ public:

    bool                hasFileDescriptors() const;

    // Writes the RPC header.
    status_t            writeInterfaceToken(const String16& interface);
    // Parses the RPC header, returning true if the interface name
    // in the header matches the expected interface from the caller.
    bool                enforceInterface(const String16& interface) const;
    bool                checkInterface(IBinder*) const;

+12 −1
Original line number Diff line number Diff line
@@ -367,6 +367,16 @@ int64_t IPCThreadState::clearCallingIdentity()
    return token;
}

void IPCThreadState::setStrictModePolicy(int32_t policy)
{
    mStrictModePolicy = policy;
}


int32_t IPCThreadState::getStrictModePolicy() const {
    return mStrictModePolicy;
}

void IPCThreadState::restoreCallingIdentity(int64_t token)
{
    mCallingUid = (int)(token>>32);
@@ -588,7 +598,8 @@ status_t IPCThreadState::clearDeathNotification(int32_t handle, BpBinder* proxy)
}

IPCThreadState::IPCThreadState()
    : mProcess(ProcessState::self()), mMyThreadId(androidGetTid())
    : mProcess(ProcessState::self()), mMyThreadId(androidGetTid()),
      mStrictModePolicy(0)
{
    pthread_setspecific(gTLS, this);
    clearCaller();
+3 −4
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ public:
        for (n = 0; n < 5; n++){
            sp<IBinder> svc = checkService(name);
            if (svc != NULL) return svc;
            LOGI("Waiting for sevice %s...\n", String8(name).string());
            LOGI("Waiting for service %s...\n", String8(name).string());
            sleep(1);
        }
        return NULL;
@@ -226,4 +226,3 @@ status_t BnServiceManager::onTransact(
}

}; // namespace android
+6 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@

#include <binder/Parcel.h>

#include <binder/IPCThreadState.h>
#include <binder/Binder.h>
#include <binder/BpBinder.h>
#include <utils/Debug.h>
@@ -436,8 +437,10 @@ bool Parcel::hasFileDescriptors() const
    return mHasFds;
}

// Write RPC headers.  (previously just the interface token)
status_t Parcel::writeInterfaceToken(const String16& interface)
{
    writeInt32(IPCThreadState::self()->getStrictModePolicy());
    // currently the interface identification token is just its name as a string
    return writeString16(interface);
}
@@ -449,6 +452,7 @@ bool Parcel::checkInterface(IBinder* binder) const

bool Parcel::enforceInterface(const String16& interface) const
{
    int32_t strict_policy = readInt32();
    const String16 str(readString16());
    if (str == interface) {
        return true;