diff options
author | Ingo Huerner <ingo.huerner@xse.de> | 2015-01-08 13:19:20 +0100 |
---|---|---|
committer | Ingo Huerner <ingo.huerner@xse.de> | 2015-01-08 13:19:20 +0100 |
commit | e026de7ddd7ef60abb5213f046db20cf7dffcb51 (patch) | |
tree | b3244c3df3b6b901c7b962b0f542228eee86c90b | |
parent | 2fc0d0f76225e8c318a5c7e9995ceda8201ec1f7 (diff) | |
download | persistence-client-library-e026de7ddd7ef60abb5213f046db20cf7dffcb51.tar.gz |
Removed compiler warnings; added check for shared data if application is allowed to modify
-rw-r--r-- | include/persistence_client_library_error_def.h | 2 | ||||
-rw-r--r-- | include/persistence_client_library_key.h | 2 | ||||
-rw-r--r-- | src/persistence_client_library.c | 1 | ||||
-rw-r--r-- | src/persistence_client_library_data_organization.h | 2 | ||||
-rw-r--r-- | src/persistence_client_library_dbus_service.c | 8 | ||||
-rw-r--r-- | src/persistence_client_library_file.c | 6 | ||||
-rw-r--r-- | src/persistence_client_library_key.c | 12 | ||||
-rw-r--r-- | src/rbtree.c | 2 | ||||
-rw-r--r-- | test/data/PAS_data.tar.gz | bin | 6949 -> 7018 bytes | |||
-rw-r--r-- | test/persistence_client_library_dbus_test.c | 8 | ||||
-rw-r--r-- | test/persistence_client_library_test.c | 53 |
11 files changed, 81 insertions, 15 deletions
diff --git a/include/persistence_client_library_error_def.h b/include/persistence_client_library_error_def.h index 7677e51..7a9d80d 100644 --- a/include/persistence_client_library_error_def.h +++ b/include/persistence_client_library_error_def.h @@ -119,6 +119,8 @@ extern "C" { #define EPERS_SHUTDOWN_NO_PERMIT (-42) /// not a trusted application,no access to persistence data #define EPERS_SHUTDOWN_NO_TRUSTED (-43) +/// not the responsible application to modify shared data +#define EPERS_NOT_RESP_APP (-44) /// requested handle is not valid. \since PCL v7.0.3 #define EPERS_INVALID_HANDLE (-1000) diff --git a/include/persistence_client_library_key.h b/include/persistence_client_library_key.h index e0a8889..338e3e9 100644 --- a/include/persistence_client_library_key.h +++ b/include/persistence_client_library_key.h @@ -298,7 +298,7 @@ int pclKeyUnRegisterNotifyOnChange( unsigned int ldbid, const char * resource_ * @return positive value (0 or greater): the bytes written; * On error a negative value will be returned with the following error codes: * ::EPERS_LOCKFS ::EPERS_BADPOL ::EPERS_BUFLIMIT ::EPERS_DB_VALUE_SIZE ::EPERS_DB_KEY_SIZE - * ::EPERS_NOTIFY_SIG ::EPERS_RESOURCE_READ_ONLY + * ::EPERS_NOTIFY_SIG ::EPERS_RESOURCE_READ_ONLY ::EPERS_NOT_RESP_APP */ int pclKeyWriteData(unsigned int ldbid, const char* resource_id, unsigned int user_no, unsigned int seat_no, unsigned char* buffer, int buffer_size); diff --git a/src/persistence_client_library.c b/src/persistence_client_library.c index f0f02fb..174c081 100644 --- a/src/persistence_client_library.c +++ b/src/persistence_client_library.c @@ -64,6 +64,7 @@ static int gAppCheckFlag = -1; int customAsyncInitClbk(int errcode) { + (void)errcode; printf("Dummy async init Callback\n"); return 1; diff --git a/src/persistence_client_library_data_organization.h b/src/persistence_client_library_data_organization.h index df61287..85c0d4d 100644 --- a/src/persistence_client_library_data_organization.h +++ b/src/persistence_client_library_data_organization.h @@ -47,7 +47,7 @@ typedef struct _PersistenceDbContext_s /// lofical database id unsigned int ldbid; /// user number - unsigned int user_no; + int user_no; /// seat number unsigned int seat_no; } PersistenceDbContext_s; diff --git a/src/persistence_client_library_dbus_service.c b/src/persistence_client_library_dbus_service.c index 4b487f3..d87e606 100644 --- a/src/persistence_client_library_dbus_service.c +++ b/src/persistence_client_library_dbus_service.c @@ -352,7 +352,7 @@ static dbus_bool_t addWatch(DBusWatch *watch, void *data) dbus_bool_t result = FALSE; (void)data; - if (ARRAY_SIZE(gPollInfo.fds)>gPollInfo.nfds) + if (ARRAY_SIZE(gPollInfo.fds) > (unsigned int)(gPollInfo.nfds)) { int flags = dbus_watch_get_flags(watch); @@ -418,7 +418,7 @@ static dbus_bool_t addTimeout(DBusTimeout *timeout, void *data) (void)data; dbus_bool_t ret = FALSE; - if (ARRAY_SIZE(gPollInfo.fds)>gPollInfo.nfds) + if(ARRAY_SIZE(gPollInfo.fds) > (unsigned int)(gPollInfo.nfds)) { const int interval = dbus_timeout_get_interval(timeout); if ((0<interval)&&(TRUE==dbus_timeout_get_enabled(timeout))) @@ -517,6 +517,10 @@ int mainLoop(DBusObjectPathVTable vtable, DBusObjectPathVTable vtable2, DBusConnection* conn = (DBusConnection*)userData; dbus_error_init(&err); +#if USE_PASINTERFACE != 1 + (void)vtable; +#endif + if (dbus_error_is_set(&err)) { DLT_LOG(gPclDLTContext, DLT_LOG_ERROR, DLT_STRING("mainLoop - Con Err:"), DLT_STRING(err.message) ); diff --git a/src/persistence_client_library_file.c b/src/persistence_client_library_file.c index a93fa8d..49bb5b3 100644 --- a/src/persistence_client_library_file.c +++ b/src/persistence_client_library_file.c @@ -173,6 +173,10 @@ void* pclFileMapData(void* addr, long size, long offset, int fd) void* ptr = 0; #if USE_FILECACHE + (void)addr; + (void)size; + (void)offset; + (void)fd; DLT_LOG(gPclDLTContext, DLT_LOG_WARN, DLT_STRING("fileMapData not supported when using file cache")); #else //DLT_LOG(gDLTContext, DLT_LOG_INFO, DLT_STRING("pclFileMapData fd: "), DLT_INT(fd)); @@ -409,7 +413,7 @@ int pclFileOpen(unsigned int ldbid, const char* resource_id, unsigned int user_n // if(dbContext.configKey.type == PersistenceResourceType_file) { - if(user_no == PCL_USER_DEFAULTDATA) + if(user_no == (unsigned int)PCL_USER_DEFAULTDATA) { handle = pclFileOpenDefaultData(&dbContext, resource_id); set_file_user_id(handle, PCL_USER_DEFAULTDATA); diff --git a/src/persistence_client_library_key.c b/src/persistence_client_library_key.c index 3834a71..2a67839 100644 --- a/src/persistence_client_library_key.c +++ b/src/persistence_client_library_key.c @@ -495,9 +495,17 @@ int pclKeyWriteData(unsigned int ldbid, const char* resource_id, unsigned int us if(dbContext.configKey.permission != PersistencePermission_ReadOnly) // don't write to a read only resource { // store data - if( dbContext.configKey.storage < PersistenceStorage_LastEntry) // check if store policy is valid + if(dbContext.configKey.storage < PersistenceStorage_LastEntry) // check if store policy is valid { - data_size = persistence_set_data(dbPath, dbKey, resource_id, &dbContext, buffer, buffer_size); + if( (dbContext.configKey.storage == PersistenceStorage_shared) + && (0 != strncmp(dbContext.configKey.reponsible, gAppId, MaxAppNameLen) ) ) + { + data_size = EPERS_NOT_RESP_APP; + } + else + { + data_size = persistence_set_data(dbPath, dbKey, resource_id, &dbContext, buffer, buffer_size); + } } else { diff --git a/src/rbtree.c b/src/rbtree.c index 7107979..d3496ed 100644 --- a/src/rbtree.c +++ b/src/rbtree.c @@ -255,7 +255,7 @@ int jsw_rbinsert ( jsw_rbtree_t *tree, void *data ) } else { - jsw_rbnode_t head = {0}; /* False tree root */ + jsw_rbnode_t head = {0, NULL, {NULL, NULL} }; /* False tree root */ jsw_rbnode_t *g, *t; /* Grandparent & parent */ jsw_rbnode_t *p, *q; /* Iterator & parent */ int dir = 0, last = 0; diff --git a/test/data/PAS_data.tar.gz b/test/data/PAS_data.tar.gz Binary files differindex de372b5..46c5eca 100644 --- a/test/data/PAS_data.tar.gz +++ b/test/data/PAS_data.tar.gz diff --git a/test/persistence_client_library_dbus_test.c b/test/persistence_client_library_dbus_test.c index 2dbd5dc..dae3bc2 100644 --- a/test/persistence_client_library_dbus_test.c +++ b/test/persistence_client_library_dbus_test.c @@ -55,18 +55,18 @@ int main(int argc, char *argv[]) printf("pclInitLibrary: %d\n", ret); printf("Press a key to end application\n"); - ret = pclKeyHandleOpen(0xFF, "posHandle/last_position", 0, 0); + ret = pclKeyHandleOpen(PCL_LDBID_LOCAL, "posHandle/last_position", 0, 0); printf("Register for change notification\n"); ret = pclKeyRegisterNotifyOnChange(0x20, "links/last_link2", 2/*user_no*/, 1/*seat_no*/, &myChangeCallback); ret = pclKeyRegisterNotifyOnChange(0x20, "links/last_link3", 3/*user_no*/, 2/*seat_no*/, &myChangeCallback); ret = pclKeyRegisterNotifyOnChange(0x20, "links/last_link4", 4/*user_no*/, 1/*seat_no*/, &myChangeCallback); - ret = pclKeyRegisterNotifyOnChange(0xFF, "69", 1/*user_no*/, 2/*seat_no*/, &myChangeCallback); + ret = pclKeyRegisterNotifyOnChange(PCL_LDBID_LOCAL, "69", 1/*user_no*/, 2/*seat_no*/, &myChangeCallback); printf("Reg => 69: %d\n", ret); - ret = pclKeyRegisterNotifyOnChange(0xFF, "70", 1/*user_no*/, 2/*seat_no*/, &myChangeCallback); + ret = pclKeyRegisterNotifyOnChange(PCL_LDBID_LOCAL, "70", 1/*user_no*/, 2/*seat_no*/, &myChangeCallback); printf("Reg => 70: %d\n", ret); - ret = pclKeyRegisterNotifyOnChange(0xFF, "key_70", 1/*user_no*/, 2/*seat_no*/, &myChangeCallback); + ret = pclKeyRegisterNotifyOnChange(PCL_LDBID_LOCAL, "key_70", 1/*user_no*/, 2/*seat_no*/, &myChangeCallback); printf("Reg => key_70: %d\n", ret); diff --git a/test/persistence_client_library_test.c b/test/persistence_client_library_test.c index e5e3b99..db3a1e8 100644 --- a/test/persistence_client_library_test.c +++ b/test/persistence_client_library_test.c @@ -210,7 +210,7 @@ START_TEST (test_GetDataHandle) locTime = localtime(&t); - snprintf(sysTimeBuffer, 128, "TimeAndData: \"%s %d.%d.%d - %d:%.2d:%.2d Uhr\"", dayOfWeek[locTime->tm_wday], locTime->tm_mday, locTime->tm_mon, (locTime->tm_year+1900), + snprintf(sysTimeBuffer, 128, "TimeAndData: \"%s %d.%d.%d - %d:%.2d:%.2d Uhr\"", dayOfWeek[locTime->tm_wday], locTime->tm_mday, locTime->tm_mon+1, (locTime->tm_year+1900), locTime->tm_hour, locTime->tm_min, locTime->tm_sec); @@ -336,7 +336,7 @@ START_TEST(test_SetData) locTime = localtime(&t); // write data - snprintf(sysTimeBuffer, 128, "\"%s %d.%d.%d - %d:%.2d:%.2d Uhr\"", dayOfWeek[locTime->tm_wday], locTime->tm_mday, locTime->tm_mon, (locTime->tm_year+1900), + snprintf(sysTimeBuffer, 128, "\"%s %d.%d.%d - %d:%.2d:%.2d Uhr\"", dayOfWeek[locTime->tm_wday], locTime->tm_mday, locTime->tm_mon+1, (locTime->tm_year+1900), locTime->tm_hour, locTime->tm_min, locTime->tm_sec); /** @@ -454,7 +454,7 @@ START_TEST(test_SetDataNoPRCT) locTime = localtime(&t); - snprintf(sysTimeBuffer, 128, "TimeAndData: \"%s %d.%d.%d - %d:%.2d:%.2d Uhr\"", dayOfWeek[locTime->tm_wday], locTime->tm_mday, locTime->tm_mon, (locTime->tm_year+1900), + snprintf(sysTimeBuffer, 128, "TimeAndData: \"%s %d.%d.%d - %d:%.2d:%.2d Uhr\"", dayOfWeek[locTime->tm_wday], locTime->tm_mday, locTime->tm_mon+1, (locTime->tm_year+1900), locTime->tm_hour, locTime->tm_min, locTime->tm_sec); /** @@ -1585,6 +1585,47 @@ START_TEST(test_DbusInterface) END_TEST +START_TEST(test_SharedAccess) +{ + int ret = 0; + unsigned int shutdownReg = PCL_SHUTDOWN_TYPE_FAST | PCL_SHUTDOWN_TYPE_NORMAL; + unsigned char buffer[256] = {0}; + char sysTimeBuffer[256]; + struct tm *locTime; + time_t t = time(0); + + locTime = localtime(&t); + + // write data + snprintf(sysTimeBuffer, 128, "\"%s %d.%d.%d - %d:%.2d:%.2d Uhr\"", dayOfWeek[locTime->tm_wday], locTime->tm_mday, locTime->tm_mon+1, (locTime->tm_year+1900), + locTime->tm_hour, locTime->tm_min, locTime->tm_sec); + + (void)pclInitLibrary(gTheAppId, shutdownReg); // use the app id, the resource is registered for + + ret = pclKeyWriteData(PCL_LDBID_PUBLIC, "aSharedResource", 1, 1, (unsigned char*)sysTimeBuffer, strlen(sysTimeBuffer)); + fail_unless(ret == (int)strlen(sysTimeBuffer), "Failed to write shared data "); + + ret = pclKeyReadData(PCL_LDBID_PUBLIC, "aSharedResource", 1, 1, buffer, 256); + fail_unless(ret == (int)strlen(sysTimeBuffer), "Failed to read shared data "); + + pclDeinitLibrary(); + + // ---------------------------------------------- + + (void)pclInitLibrary("node-health-monitor", shutdownReg); // now use a different app id, which is not able to write this resource + + ret = pclKeyWriteData(PCL_LDBID_PUBLIC, "aSharedResource", 1, 1, (unsigned char*)"This is a test Buffer", strlen("This is a test Buffer")); + fail_unless(ret == EPERS_NOT_RESP_APP, "Able to write shared data, but should not!!"); + + ret = pclKeyReadData(PCL_LDBID_PUBLIC, "aSharedResource", 1, 1, buffer, 256); + fail_unless(ret == (int)strlen(sysTimeBuffer), "Failed to read shared data "); + fail_unless(strncmp((char*)buffer, sysTimeBuffer, strlen((char*)sysTimeBuffer)) == 0, "Buffer not correctly read"); + + pclDeinitLibrary(); +} +END_TEST + + static Suite * persistencyClientLib_suite() { const char* testSuiteName = "Persistency_client_library"; @@ -1689,6 +1730,9 @@ static Suite * persistencyClientLib_suite() TCase * tc_VerifyROnly = tcase_create("VerifyROnly"); tcase_add_test(tc_VerifyROnly, test_VerifyROnly); + TCase * tc_SharedAccess = tcase_create("SharedAccess"); + tcase_add_test(tc_SharedAccess, test_SharedAccess); + tcase_set_timeout(tc_SharedAccess, 2); suite_add_tcase(s, tc_persSetData); @@ -1753,6 +1797,9 @@ static Suite * persistencyClientLib_suite() suite_add_tcase(s, tc_DataFileConfDefault); tcase_add_checked_fixture(tc_DataFileConfDefault, data_setup, data_teardown); + + suite_add_tcase(s, tc_SharedAccess); + #if USE_APPCHECK suite_add_tcase(s, tc_ValidApplication); #endif |