Loading cmds/servicemanager/binder.c +3 −3 Original line number Diff line number Diff line Loading @@ -514,7 +514,7 @@ void bio_put_obj(struct binder_io *bio, void *ptr) return; obj->flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; obj->type = BINDER_TYPE_BINDER; obj->hdr.type = BINDER_TYPE_BINDER; obj->binder = (uintptr_t)ptr; obj->cookie = 0; } Loading @@ -532,7 +532,7 @@ void bio_put_ref(struct binder_io *bio, uint32_t handle) return; obj->flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; obj->type = BINDER_TYPE_HANDLE; obj->hdr.type = BINDER_TYPE_HANDLE; obj->handle = handle; obj->cookie = 0; } Loading Loading @@ -649,7 +649,7 @@ uint32_t bio_get_ref(struct binder_io *bio) if (!obj) return 0; if (obj->type == BINDER_TYPE_HANDLE) if (obj->hdr.type == BINDER_TYPE_HANDLE) return obj->handle; return 0; Loading libs/binder/Parcel.cpp +21 −21 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ enum { void acquire_object(const sp<ProcessState>& proc, const flat_binder_object& obj, const void* who, size_t* outAshmemSize) { switch (obj.type) { switch (obj.hdr.type) { case BINDER_TYPE_BINDER: if (obj.binder) { LOG_REFS("Parcel %p acquiring reference on local %p", who, obj.cookie); Loading Loading @@ -139,7 +139,7 @@ void acquire_object(const sp<ProcessState>& proc, } } ALOGD("Invalid object type 0x%08x", obj.type); ALOGD("Invalid object type 0x%08x", obj.hdr.type); } void acquire_object(const sp<ProcessState>& proc, Loading @@ -151,7 +151,7 @@ void acquire_object(const sp<ProcessState>& proc, static void release_object(const sp<ProcessState>& proc, const flat_binder_object& obj, const void* who, size_t* outAshmemSize) { switch (obj.type) { switch (obj.hdr.type) { case BINDER_TYPE_BINDER: if (obj.binder) { LOG_REFS("Parcel %p releasing reference on local %p", who, obj.cookie); Loading Loading @@ -190,7 +190,7 @@ static void release_object(const sp<ProcessState>& proc, } } ALOGE("Invalid object type 0x%08x", obj.type); ALOGE("Invalid object type 0x%08x", obj.hdr.type); } void release_object(const sp<ProcessState>& proc, Loading Loading @@ -219,17 +219,17 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, ALOGE("null proxy"); } const int32_t handle = proxy ? proxy->handle() : 0; obj.type = BINDER_TYPE_HANDLE; obj.hdr.type = BINDER_TYPE_HANDLE; obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = handle; obj.cookie = 0; } else { obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = reinterpret_cast<uintptr_t>(local->getWeakRefs()); obj.cookie = reinterpret_cast<uintptr_t>(local); } } else { obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = 0; obj.cookie = 0; } Loading @@ -253,12 +253,12 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, ALOGE("null proxy"); } const int32_t handle = proxy ? proxy->handle() : 0; obj.type = BINDER_TYPE_WEAK_HANDLE; obj.hdr.type = BINDER_TYPE_WEAK_HANDLE; obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = handle; obj.cookie = 0; } else { obj.type = BINDER_TYPE_WEAK_BINDER; obj.hdr.type = BINDER_TYPE_WEAK_BINDER; obj.binder = reinterpret_cast<uintptr_t>(binder.get_refs()); obj.cookie = reinterpret_cast<uintptr_t>(binder.unsafe_get()); } Loading @@ -273,13 +273,13 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, // but we can't do that with the different reference counting // implementation we are using. ALOGE("Unable to unflatten Binder weak reference!"); obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = 0; obj.cookie = 0; return finish_flatten_binder(NULL, obj, out); } else { obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = 0; obj.cookie = 0; return finish_flatten_binder(NULL, obj, out); Loading @@ -299,7 +299,7 @@ status_t unflatten_binder(const sp<ProcessState>& proc, const flat_binder_object* flat = in.readObject(false); if (flat) { switch (flat->type) { switch (flat->hdr.type) { case BINDER_TYPE_BINDER: *out = reinterpret_cast<IBinder*>(flat->cookie); return finish_unflatten_binder(NULL, *flat, in); Loading @@ -318,7 +318,7 @@ status_t unflatten_binder(const sp<ProcessState>& proc, const flat_binder_object* flat = in.readObject(false); if (flat) { switch (flat->type) { switch (flat->hdr.type) { case BINDER_TYPE_BINDER: *out = reinterpret_cast<IBinder*>(flat->cookie); return finish_unflatten_binder(NULL, *flat, in); Loading Loading @@ -535,7 +535,7 @@ status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len) = reinterpret_cast<flat_binder_object*>(mData + off); acquire_object(proc, *flat, this, &mOpenAshmemSize); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { // If this is a file descriptor, we need to dup it so the // new Parcel now owns its own fd, and can declare that we // officially know we have fds. Loading Loading @@ -1132,7 +1132,7 @@ status_t Parcel::writeNativeHandle(const native_handle* handle) status_t Parcel::writeFileDescriptor(int fd, bool takeOwnership) { flat_binder_object obj; obj.type = BINDER_TYPE_FD; obj.hdr.type = BINDER_TYPE_FD; obj.flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = fd; Loading Loading @@ -1284,7 +1284,7 @@ restart_write: *reinterpret_cast<flat_binder_object*>(mData+mDataPos) = val; // remember if it's a file descriptor if (val.type == BINDER_TYPE_FD) { if (val.hdr.type == BINDER_TYPE_FD) { if (!mAllowFds) { // fail before modifying our object index return FDS_NOT_ALLOWED; Loading Loading @@ -1989,7 +1989,7 @@ int Parcel::readFileDescriptor() const { const flat_binder_object* flat = readObject(true); if (flat && flat->type == BINDER_TYPE_FD) { if (flat && flat->hdr.type == BINDER_TYPE_FD) { return flat->handle; } Loading Loading @@ -2167,7 +2167,7 @@ void Parcel::closeFileDescriptors() i--; const flat_binder_object* flat = reinterpret_cast<flat_binder_object*>(mData+mObjects[i]); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { //ALOGI("Closing fd: %ld", flat->handle); close(flat->handle); } Loading Loading @@ -2239,7 +2239,7 @@ void Parcel::print(TextOutput& to, uint32_t /*flags*/) const const flat_binder_object* flat = reinterpret_cast<const flat_binder_object*>(DATA+OBJS[i]); to << endl << "Object #" << i << " @ " << (void*)OBJS[i] << ": " << TypeCode(flat->type & 0x7f7f7f00) << TypeCode(flat->hdr.type & 0x7f7f7f00) << " = " << flat->binder; } } else { Loading Loading @@ -2460,7 +2460,7 @@ status_t Parcel::continueWrite(size_t desired) for (size_t i=objectsSize; i<mObjectsSize; i++) { const flat_binder_object* flat = reinterpret_cast<flat_binder_object*>(mData+mObjects[i]); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { // will need to rescan because we may have lopped off the only FDs mFdsKnown = false; } Loading Loading @@ -2570,7 +2570,7 @@ void Parcel::scanForFds() const for (size_t i=0; i<mObjectsSize; i++) { const flat_binder_object* flat = reinterpret_cast<const flat_binder_object*>(mData + mObjects[i]); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { hasFds = true; break; } Loading Loading
cmds/servicemanager/binder.c +3 −3 Original line number Diff line number Diff line Loading @@ -514,7 +514,7 @@ void bio_put_obj(struct binder_io *bio, void *ptr) return; obj->flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; obj->type = BINDER_TYPE_BINDER; obj->hdr.type = BINDER_TYPE_BINDER; obj->binder = (uintptr_t)ptr; obj->cookie = 0; } Loading @@ -532,7 +532,7 @@ void bio_put_ref(struct binder_io *bio, uint32_t handle) return; obj->flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; obj->type = BINDER_TYPE_HANDLE; obj->hdr.type = BINDER_TYPE_HANDLE; obj->handle = handle; obj->cookie = 0; } Loading Loading @@ -649,7 +649,7 @@ uint32_t bio_get_ref(struct binder_io *bio) if (!obj) return 0; if (obj->type == BINDER_TYPE_HANDLE) if (obj->hdr.type == BINDER_TYPE_HANDLE) return obj->handle; return 0; Loading
libs/binder/Parcel.cpp +21 −21 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ enum { void acquire_object(const sp<ProcessState>& proc, const flat_binder_object& obj, const void* who, size_t* outAshmemSize) { switch (obj.type) { switch (obj.hdr.type) { case BINDER_TYPE_BINDER: if (obj.binder) { LOG_REFS("Parcel %p acquiring reference on local %p", who, obj.cookie); Loading Loading @@ -139,7 +139,7 @@ void acquire_object(const sp<ProcessState>& proc, } } ALOGD("Invalid object type 0x%08x", obj.type); ALOGD("Invalid object type 0x%08x", obj.hdr.type); } void acquire_object(const sp<ProcessState>& proc, Loading @@ -151,7 +151,7 @@ void acquire_object(const sp<ProcessState>& proc, static void release_object(const sp<ProcessState>& proc, const flat_binder_object& obj, const void* who, size_t* outAshmemSize) { switch (obj.type) { switch (obj.hdr.type) { case BINDER_TYPE_BINDER: if (obj.binder) { LOG_REFS("Parcel %p releasing reference on local %p", who, obj.cookie); Loading Loading @@ -190,7 +190,7 @@ static void release_object(const sp<ProcessState>& proc, } } ALOGE("Invalid object type 0x%08x", obj.type); ALOGE("Invalid object type 0x%08x", obj.hdr.type); } void release_object(const sp<ProcessState>& proc, Loading Loading @@ -219,17 +219,17 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, ALOGE("null proxy"); } const int32_t handle = proxy ? proxy->handle() : 0; obj.type = BINDER_TYPE_HANDLE; obj.hdr.type = BINDER_TYPE_HANDLE; obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = handle; obj.cookie = 0; } else { obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = reinterpret_cast<uintptr_t>(local->getWeakRefs()); obj.cookie = reinterpret_cast<uintptr_t>(local); } } else { obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = 0; obj.cookie = 0; } Loading @@ -253,12 +253,12 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, ALOGE("null proxy"); } const int32_t handle = proxy ? proxy->handle() : 0; obj.type = BINDER_TYPE_WEAK_HANDLE; obj.hdr.type = BINDER_TYPE_WEAK_HANDLE; obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = handle; obj.cookie = 0; } else { obj.type = BINDER_TYPE_WEAK_BINDER; obj.hdr.type = BINDER_TYPE_WEAK_BINDER; obj.binder = reinterpret_cast<uintptr_t>(binder.get_refs()); obj.cookie = reinterpret_cast<uintptr_t>(binder.unsafe_get()); } Loading @@ -273,13 +273,13 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, // but we can't do that with the different reference counting // implementation we are using. ALOGE("Unable to unflatten Binder weak reference!"); obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = 0; obj.cookie = 0; return finish_flatten_binder(NULL, obj, out); } else { obj.type = BINDER_TYPE_BINDER; obj.hdr.type = BINDER_TYPE_BINDER; obj.binder = 0; obj.cookie = 0; return finish_flatten_binder(NULL, obj, out); Loading @@ -299,7 +299,7 @@ status_t unflatten_binder(const sp<ProcessState>& proc, const flat_binder_object* flat = in.readObject(false); if (flat) { switch (flat->type) { switch (flat->hdr.type) { case BINDER_TYPE_BINDER: *out = reinterpret_cast<IBinder*>(flat->cookie); return finish_unflatten_binder(NULL, *flat, in); Loading @@ -318,7 +318,7 @@ status_t unflatten_binder(const sp<ProcessState>& proc, const flat_binder_object* flat = in.readObject(false); if (flat) { switch (flat->type) { switch (flat->hdr.type) { case BINDER_TYPE_BINDER: *out = reinterpret_cast<IBinder*>(flat->cookie); return finish_unflatten_binder(NULL, *flat, in); Loading Loading @@ -535,7 +535,7 @@ status_t Parcel::appendFrom(const Parcel *parcel, size_t offset, size_t len) = reinterpret_cast<flat_binder_object*>(mData + off); acquire_object(proc, *flat, this, &mOpenAshmemSize); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { // If this is a file descriptor, we need to dup it so the // new Parcel now owns its own fd, and can declare that we // officially know we have fds. Loading Loading @@ -1132,7 +1132,7 @@ status_t Parcel::writeNativeHandle(const native_handle* handle) status_t Parcel::writeFileDescriptor(int fd, bool takeOwnership) { flat_binder_object obj; obj.type = BINDER_TYPE_FD; obj.hdr.type = BINDER_TYPE_FD; obj.flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = fd; Loading Loading @@ -1284,7 +1284,7 @@ restart_write: *reinterpret_cast<flat_binder_object*>(mData+mDataPos) = val; // remember if it's a file descriptor if (val.type == BINDER_TYPE_FD) { if (val.hdr.type == BINDER_TYPE_FD) { if (!mAllowFds) { // fail before modifying our object index return FDS_NOT_ALLOWED; Loading Loading @@ -1989,7 +1989,7 @@ int Parcel::readFileDescriptor() const { const flat_binder_object* flat = readObject(true); if (flat && flat->type == BINDER_TYPE_FD) { if (flat && flat->hdr.type == BINDER_TYPE_FD) { return flat->handle; } Loading Loading @@ -2167,7 +2167,7 @@ void Parcel::closeFileDescriptors() i--; const flat_binder_object* flat = reinterpret_cast<flat_binder_object*>(mData+mObjects[i]); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { //ALOGI("Closing fd: %ld", flat->handle); close(flat->handle); } Loading Loading @@ -2239,7 +2239,7 @@ void Parcel::print(TextOutput& to, uint32_t /*flags*/) const const flat_binder_object* flat = reinterpret_cast<const flat_binder_object*>(DATA+OBJS[i]); to << endl << "Object #" << i << " @ " << (void*)OBJS[i] << ": " << TypeCode(flat->type & 0x7f7f7f00) << TypeCode(flat->hdr.type & 0x7f7f7f00) << " = " << flat->binder; } } else { Loading Loading @@ -2460,7 +2460,7 @@ status_t Parcel::continueWrite(size_t desired) for (size_t i=objectsSize; i<mObjectsSize; i++) { const flat_binder_object* flat = reinterpret_cast<flat_binder_object*>(mData+mObjects[i]); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { // will need to rescan because we may have lopped off the only FDs mFdsKnown = false; } Loading Loading @@ -2570,7 +2570,7 @@ void Parcel::scanForFds() const for (size_t i=0; i<mObjectsSize; i++) { const flat_binder_object* flat = reinterpret_cast<const flat_binder_object*>(mData + mObjects[i]); if (flat->type == BINDER_TYPE_FD) { if (flat->hdr.type == BINDER_TYPE_FD) { hasFds = true; break; } Loading