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

Commit 009fc1a7 authored by Steven Moreland's avatar Steven Moreland
Browse files

libbinder_ndk: ibinder.cpp explicit errors

You know when you're writing an error message and you're like
ughhhhhh so much work for a couple extra chars that probably won't
matter, and we can make the error useful when it's needed. Well,
this is that time! and it's needed now! :) Should write good
error messages from the start! :D

Bug: 235338094
Test: atest CtsNdkBinderTestCases
Change-Id: I85d0eba25a5cdb8341615d6fe3ac9c7e38fc28ca
parent 7514e3b9
Loading
Loading
Loading
Loading
+16 −7
Original line number Original line Diff line number Diff line
@@ -36,6 +36,7 @@ using ::android::IResultReceiver;
using ::android::Parcel;
using ::android::Parcel;
using ::android::sp;
using ::android::sp;
using ::android::status_t;
using ::android::status_t;
using ::android::statusToString;
using ::android::String16;
using ::android::String16;
using ::android::String8;
using ::android::String8;
using ::android::wp;
using ::android::wp;
@@ -133,7 +134,8 @@ bool AIBinder::associateClass(const AIBinder_Class* clazz) {
        } else {
        } else {
            // b/155793159
            // b/155793159
            LOG(ERROR) << __func__ << ": Cannot associate class '" << newDescriptor
            LOG(ERROR) << __func__ << ": Cannot associate class '" << newDescriptor
                       << "' to dead binder.";
                       << "' to dead binder with cached descriptor '" << SanitizeString(descriptor)
                       << "'.";
        }
        }
        return false;
        return false;
    }
    }
@@ -458,7 +460,8 @@ binder_status_t AIBinder_DeathRecipient::unlinkToDeath(const sp<IBinder>& binder
            status_t status = binder->unlinkToDeath(recipient, cookie, 0 /*flags*/);
            status_t status = binder->unlinkToDeath(recipient, cookie, 0 /*flags*/);
            if (status != ::android::OK) {
            if (status != ::android::OK) {
                LOG(ERROR) << __func__
                LOG(ERROR) << __func__
                           << ": removed reference to death recipient but unlink failed.";
                           << ": removed reference to death recipient but unlink failed: "
                           << statusToString(status);
            }
            }
            return PruneStatusT(status);
            return PruneStatusT(status);
        }
        }
@@ -539,7 +542,8 @@ binder_status_t AIBinder_dump(AIBinder* binder, int fd, const char** args, uint3
binder_status_t AIBinder_linkToDeath(AIBinder* binder, AIBinder_DeathRecipient* recipient,
binder_status_t AIBinder_linkToDeath(AIBinder* binder, AIBinder_DeathRecipient* recipient,
                                     void* cookie) {
                                     void* cookie) {
    if (binder == nullptr || recipient == nullptr) {
    if (binder == nullptr || recipient == nullptr) {
        LOG(ERROR) << __func__ << ": Must provide binder and recipient.";
        LOG(ERROR) << __func__ << ": Must provide binder (" << binder << ") and recipient ("
                   << recipient << ")";
        return STATUS_UNEXPECTED_NULL;
        return STATUS_UNEXPECTED_NULL;
    }
    }


@@ -550,7 +554,8 @@ binder_status_t AIBinder_linkToDeath(AIBinder* binder, AIBinder_DeathRecipient*
binder_status_t AIBinder_unlinkToDeath(AIBinder* binder, AIBinder_DeathRecipient* recipient,
binder_status_t AIBinder_unlinkToDeath(AIBinder* binder, AIBinder_DeathRecipient* recipient,
                                       void* cookie) {
                                       void* cookie) {
    if (binder == nullptr || recipient == nullptr) {
    if (binder == nullptr || recipient == nullptr) {
        LOG(ERROR) << __func__ << ": Must provide binder and recipient.";
        LOG(ERROR) << __func__ << ": Must provide binder (" << binder << ") and recipient ("
                   << recipient << ")";
        return STATUS_UNEXPECTED_NULL;
        return STATUS_UNEXPECTED_NULL;
    }
    }


@@ -625,7 +630,8 @@ void* AIBinder_getUserData(AIBinder* binder) {


binder_status_t AIBinder_prepareTransaction(AIBinder* binder, AParcel** in) {
binder_status_t AIBinder_prepareTransaction(AIBinder* binder, AParcel** in) {
    if (binder == nullptr || in == nullptr) {
    if (binder == nullptr || in == nullptr) {
        LOG(ERROR) << __func__ << ": requires non-null parameters.";
        LOG(ERROR) << __func__ << ": requires non-null parameters binder (" << binder
                   << ") and in (" << in << ").";
        return STATUS_UNEXPECTED_NULL;
        return STATUS_UNEXPECTED_NULL;
    }
    }
    const AIBinder_Class* clazz = binder->getClass();
    const AIBinder_Class* clazz = binder->getClass();
@@ -671,7 +677,9 @@ binder_status_t AIBinder_transact(AIBinder* binder, transaction_code_t code, APa
    AutoParcelDestroyer forIn(in, DestroyParcel);
    AutoParcelDestroyer forIn(in, DestroyParcel);


    if (!isUserCommand(code)) {
    if (!isUserCommand(code)) {
        LOG(ERROR) << __func__ << ": Only user-defined transactions can be made from the NDK.";
        LOG(ERROR) << __func__
                   << ": Only user-defined transactions can be made from the NDK, but requested: "
                   << code;
        return STATUS_UNKNOWN_TRANSACTION;
        return STATUS_UNKNOWN_TRANSACTION;
    }
    }


@@ -682,7 +690,8 @@ binder_status_t AIBinder_transact(AIBinder* binder, transaction_code_t code, APa
    }
    }


    if (binder == nullptr || *in == nullptr || out == nullptr) {
    if (binder == nullptr || *in == nullptr || out == nullptr) {
        LOG(ERROR) << __func__ << ": requires non-null parameters.";
        LOG(ERROR) << __func__ << ": requires non-null parameters binder (" << binder << "), in ("
                   << in << "), and out (" << out << ").";
        return STATUS_UNEXPECTED_NULL;
        return STATUS_UNEXPECTED_NULL;
    }
    }