diff --git a/samgr_client/source/remote_register.c b/samgr_client/source/remote_register.c index 11531e5a4560393312f4281635d0bde1f72f2bca..c7902e2ad731bf815110afa2829e23beae8373cb 100755 --- a/samgr_client/source/remote_register.c +++ b/samgr_client/source/remote_register.c @@ -127,7 +127,7 @@ static void InitializeRegistry(void) if (g_remoteRegister.endpoint != NULL) { return; } - HILOG_INFO(HILOG_MODULE_SAMGR, "Initialize Client Registry!"); + HILOG_INFO(HILOG_MODULE_SAMGR, "Initialize Client Registry chenkang !"); MUTEX_GlobalLock(); if (g_remoteRegister.endpoint == NULL) { g_remoteRegister.mtx = MUTEX_InitValue(); diff --git a/samgr_client/source/remote_register_rpc.c b/samgr_client/source/remote_register_rpc.c index 5a630dd94d706f11546902240da9e4dae2e8eedd..65bd65281f119c733755329334f40cf3f21ada8e 100644 --- a/samgr_client/source/remote_register_rpc.c +++ b/samgr_client/source/remote_register_rpc.c @@ -145,7 +145,7 @@ static void ClientInitializeRegistry(void) if (g_remoteRegister.endpoint != NULL) { return; } - HILOG_INFO(HILOG_MODULE_SAMGR, "Initialize Client Registry!"); + HILOG_INFO(HILOG_MODULE_SAMGR, "Initialize Client Registry chenkang rpc!"); MUTEX_GlobalLock(); if (g_remoteRegister.endpoint == NULL) { g_remoteRegister.mtx = MUTEX_InitValue(); diff --git a/samgr_endpoint/source/default_client.c b/samgr_endpoint/source/default_client.c index b62422710fdcb8624dc6cd375adeda03ee539c78..71acf71d16233935b9cf8240d512d2e93efbbe41 100755 --- a/samgr_endpoint/source/default_client.c +++ b/samgr_endpoint/source/default_client.c @@ -27,6 +27,7 @@ #undef LOG_DOMAIN #define LOG_TAG "Samgr" #define LOG_DOMAIN 0xD001800 +#define SA_MAX_LEN 17 typedef struct IClientHeader IClientHeader; typedef struct IDefaultClient IDefaultClient; typedef struct IClientEntry IClientEntry; @@ -58,6 +59,7 @@ static MutexId g_mutex = NULL; IUnknown *SAMGR_CreateIProxy(const IpcContext *context, const char *service, const char *feature) { + HILOG_INFO(HILOG_MODULE_SAMGR, "SAMGR_CreateIProxy enter"); SvcIdentity identity = QueryIdentity(context, service, feature); if (identity.handle == INVALID_INDEX) { return NULL; @@ -72,10 +74,28 @@ IUnknown *SAMGR_CreateIProxy(const IpcContext *context, const char *service, con client->entry = DEFAULT_ENTRY; } + char *serviceName = (char *)malloc(SA_MAX_LEN); + if (serviceName == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "malloc null"); + return NULL; + } + char *featureName = (char *)malloc(SA_MAX_LEN); + if (featureName == NULL) { + free(serviceName); + HILOG_INFO(HILOG_MODULE_SAMGR, "featurename malloc null"); + return NULL; + } + size_t serviceLen = strlen(service); + size_t featureLen = strlen(feature); + (void)memset_s(serviceName, SA_MAX_LEN, 0, SA_MAX_LEN); + (void)memset_s(featureName, SA_MAX_LEN, 0, SA_MAX_LEN); + (void)strncpy_s(serviceName, SA_MAX_LEN, service, serviceLen); + (void)strncpy_s(featureName, SA_MAX_LEN, feature, featureLen); + HILOG_INFO(HILOG_MODULE_SAMGR, "serviceName : %s, %p; featureName : %s, %p", serviceName, serviceName, featureName, featureName); IClientHeader *header = &client->header; header->target = identity; - header->key.service = service; - header->key.feature = feature; + header->key.service = serviceName; + header->key.feature = featureName; header->context = context; (void)RegisterDeathCallback(context, identity, OnServiceExit, client, &header->deadId); @@ -111,29 +131,47 @@ SaName *SAMGR_GetSAName(const IUnknown *proxy) int SAMGR_CompareSAName(const SaName *key1, const SaName *key2) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1 : %p, key2 : %p, key1->service : %p, key2->service : %p, key1->featrue : %p, key2->feature : %p", + key1, key2, key1->service, key2->service, key1->feature, key2->feature); if (key1 == key2) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1 == key2, return"); return 0; } if (key1->service != key2->service) { int ret = strcmp(key1->service, key2->service); if (ret != 0) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1->service != key2->service, return"); return ret; } } if (key1->feature == key2->feature) { - return 0; + if (key1->feature == NULL && key2->feature == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1->feature == NULL && key2->feature == NULL, return"); + return 0; + } + if (key1->feature != NULL && key2->feature != NULL) { + int ret = strcmp(key1->service, key2->service); + if (ret == 0) { + HILOG_INFO(HILOG_MODULE_SAMGR, " strcmp(key1->service, key2->service) == 0"); + return strcmp(key1->feature, key2->feature); + } + HILOG_INFO(HILOG_MODULE_SAMGR, " strcmp(key1->service, key2->service) != 0"); + return ret; + } } if (key1->feature == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1->feature == NULL"); return -1; } if (key2->feature == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key2->feature == NULL"); return 1; } - + HILOG_INFO(HILOG_MODULE_SAMGR, "strcmp(key1->feature, key2->feature) finally, return"); return strcmp(key1->feature, key2->feature); } diff --git a/samgr_endpoint/source/default_client_rpc.c b/samgr_endpoint/source/default_client_rpc.c index dc6f9559d19b6e72ee0d110d66133d8784a075da..4c90841d8a6060bc40ab2524a5fc6aac3c90dd8d 100644 --- a/samgr_endpoint/source/default_client_rpc.c +++ b/samgr_endpoint/source/default_client_rpc.c @@ -14,6 +14,7 @@ */ #include "default_client_adapter.h" +#define SA_MAX_LEN 17 static int AddRef(IUnknown *iUnknown); static int Release(IUnknown *proxy); static int ProxyInvoke(IClientProxy *proxy, int funcId, IpcIo *request, IOwner owner, INotify notify); @@ -39,10 +40,31 @@ IUnknown *SAMGR_CreateIProxy(const char *service, const char *feature) client->entry = DEFAULT_ENTRY; } + char *serviceName = (char *)malloc(SA_MAX_LEN); + if (serviceName == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "malloc null"); + return NULL; + } + char *featureName = (char *)malloc(SA_MAX_LEN); + if (featureName == NULL) { + free(serviceName); + HILOG_INFO(HILOG_MODULE_SAMGR, "featurename malloc null"); + return NULL; + } + size_t serviceLen = strlen(service); + (void)memset_s(serviceName, SA_MAX_LEN, 0, SA_MAX_LEN); + (void)memset_s(featureName, SA_MAX_LEN, 0, SA_MAX_LEN); + (void)strncpy_s(serviceName, SA_MAX_LEN, service, serviceLen); + if (feature != NULL) { + size_t featureLen = strlen(feature); + (void)strncpy_s(featureName, SA_MAX_LEN, feature, featureLen); + } + HILOG_INFO(HILOG_MODULE_SAMGR, "serviceName : %s, %p; featureName : %s, %p", serviceName, serviceName, featureName, featureName); + IClientHeader *header = &client->header; header->target = identity; - header->key.service = service; - header->key.feature = feature; + header->key.service = serviceName; + header->key.feature = featureName; header->saId = 0; (void)AddDeathRecipient(identity, OnServiceExit, client, &header->deadId); @@ -55,6 +77,7 @@ IUnknown *SAMGR_CreateIProxy(const char *service, const char *feature) IUnknown *SAMGR_CreateIRemoteProxy(const char* deviceId, const char *service, const char *feature) { + HILOG_INFO(HILOG_MODULE_SAMGR, "SAMGR_CreateIProxy enter"); SvcIdentity identity = QueryRemoteIdentity(deviceId, service, feature); IDefaultClient *client = SAMGR_CreateIClient(service, feature, sizeof(IClientHeader)); @@ -104,29 +127,47 @@ SaName *SAMGR_GetSAName(const IUnknown *proxy) int SAMGR_CompareSAName(const SaName *key1, const SaName *key2) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1 : %p, key2 : %p, key1->service : %p, key2->service : %p, key1->featrue : %p, key2->feature : %p", + key1, key2, key1->service, key2->service, key1->feature, key2->feature); if (key1 == key2) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1 == key2, return"); return 0; } if (key1->service != key2->service) { int ret = strcmp(key1->service, key2->service); if (ret != 0) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1->service != key2->service, return"); return ret; } } if (key1->feature == key2->feature) { - return 0; + if (key1->feature == NULL && key2->feature == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1->feature == NULL && key2->feature == NULL, return"); + return 0; + } + if (key1->feature != NULL && key2->feature != NULL) { + int ret = strcmp(key1->service, key2->service); + if (ret == 0) { + HILOG_INFO(HILOG_MODULE_SAMGR, " strcmp(key1->service, key2->service) == 0"); + return strcmp(key1->feature, key2->feature); + } + HILOG_INFO(HILOG_MODULE_SAMGR, " strcmp(key1->service, key2->service) != 0"); + return ret; + } } if (key1->feature == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key1->feature == NULL"); return -1; } if (key2->feature == NULL) { + HILOG_INFO(HILOG_MODULE_SAMGR, "key2->feature == NULL"); return 1; } - + HILOG_INFO(HILOG_MODULE_SAMGR, "strcmp(key1->feature, key2->feature) finally, return"); return strcmp(key1->feature, key2->feature); }