From 1236195e9b93aeb6bfa625956fa027f96003756d Mon Sep 17 00:00:00 2001 From: Lutz Helwing Date: Wed, 15 Jul 2015 14:14:19 +0200 Subject: DLT daemon improvement - dlt_init()-check DLT daemon improvement - parameter value range check Adapt unit tests to check for enum return values Changed C version to gnu99 and C++ version to gnu++0c Signed-off-by: Alexander Wenzel --- src/dbus/dlt-dbus-options.c | 360 ++++++++++++++++++++++---------------------- src/dbus/dlt-dbus.c | 176 +++++++++++----------- src/dbus/dlt-dbus.h | 24 +-- 3 files changed, 280 insertions(+), 280 deletions(-) (limited to 'src/dbus') diff --git a/src/dbus/dlt-dbus-options.c b/src/dbus/dlt-dbus-options.c index 3c75c62..27bf4f4 100644 --- a/src/dbus/dlt-dbus-options.c +++ b/src/dbus/dlt-dbus-options.c @@ -36,20 +36,20 @@ */ void usage(char *prog_name) { - char version[255]; - dlt_get_version(version,255); - - printf("Usage: %s [options]\n", prog_name); - printf("Application to forward dbus messages to DLT.\n"); - printf("%s\n", version); - printf("Options:\n"); - printf(" -d Daemonize. Detach from terminal and run in background.\n"); - printf(" -c filename Use configuration file. \n"); - printf(" -a appid Used application id. \n"); - printf(" Default: %s\n", DEFAULT_CONF_FILE); - printf(" -b type Used bus type. \n"); - printf(" Session = 0, System = 1.\n"); - printf(" -h This help message.\n"); + char version[255]; + dlt_get_version(version,255); + + printf("Usage: %s [options]\n", prog_name); + printf("Application to forward dbus messages to DLT.\n"); + printf("%s\n", version); + printf("Options:\n"); + printf(" -d Daemonize. Detach from terminal and run in background.\n"); + printf(" -c filename Use configuration file. \n"); + printf(" -a appid Used application id. \n"); + printf(" Default: %s\n", DEFAULT_CONF_FILE); + printf(" -b type Used bus type. \n"); + printf(" Session = 0, System = 1.\n"); + printf(" -h This help message.\n"); } /** @@ -57,10 +57,10 @@ void usage(char *prog_name) */ void init_cli_options(DltDBusCliOptions *options) { - options->ConfigurationFileName = DEFAULT_CONF_FILE; - options->ApplicationId = 0; - options->BusType = 0; - options->Daemonize = 0; + options->ConfigurationFileName = DEFAULT_CONF_FILE; + options->ApplicationId = 0; + options->BusType = 0; + options->Daemonize = 0; } /** @@ -68,53 +68,53 @@ void init_cli_options(DltDBusCliOptions *options) */ int read_command_line(DltDBusCliOptions *options, int argc, char *argv[]) { - init_cli_options(options); - int opt; - - while((opt = getopt(argc, argv, "c:b:a:hd")) != -1) - { - switch(opt) { - case 'd': - { - options->Daemonize = 1; - break; - } - case 'b': - { - options->BusType = malloc(strlen(optarg)+1); - MALLOC_ASSERT(options->BusType); - strcpy(options->BusType, optarg); /* strcpy unritical here, because size matches exactly the size to be copied */ - break; - } - case 'a': - { - options->ApplicationId = malloc(strlen(optarg)+1); - MALLOC_ASSERT(options->ApplicationId); - strcpy(options->ApplicationId, optarg); /* strcpy unritical here, because size matches exactly the size to be copied */ - break; - } - case 'c': - { - options->ConfigurationFileName = malloc(strlen(optarg)+1); - MALLOC_ASSERT(options->ConfigurationFileName); - strcpy(options->ConfigurationFileName, optarg); /* strcpy unritical here, because size matches exactly the size to be copied */ - break; - } - case 'h': - { - usage(argv[0]); - exit(0); + init_cli_options(options); + int opt; + + while((opt = getopt(argc, argv, "c:b:a:hd")) != -1) + { + switch(opt) { + case 'd': + { + options->Daemonize = 1; + break; + } + case 'b': + { + options->BusType = malloc(strlen(optarg)+1); + MALLOC_ASSERT(options->BusType); + strcpy(options->BusType, optarg); /* strcpy unritical here, because size matches exactly the size to be copied */ + break; + } + case 'a': + { + options->ApplicationId = malloc(strlen(optarg)+1); + MALLOC_ASSERT(options->ApplicationId); + strcpy(options->ApplicationId, optarg); /* strcpy unritical here, because size matches exactly the size to be copied */ + break; + } + case 'c': + { + options->ConfigurationFileName = malloc(strlen(optarg)+1); + MALLOC_ASSERT(options->ConfigurationFileName); + strcpy(options->ConfigurationFileName, optarg); /* strcpy unritical here, because size matches exactly the size to be copied */ + break; + } + case 'h': + { + usage(argv[0]); + exit(0); return -1;//for parasoft - } - default: - { - fprintf(stderr, "Unknown option '%c'\n", optopt); - usage(argv[0]); - return -1; - } - } - } - return 0; + } + default: + { + fprintf(stderr, "Unknown option '%c'\n", optopt); + usage(argv[0]); + return -1; + } + } + } + return 0; } /** @@ -122,13 +122,13 @@ int read_command_line(DltDBusCliOptions *options, int argc, char *argv[]) */ void init_configuration(DltDBusConfiguration *config) { - // Common - config->ApplicationId = "IPC0"; + // Common + config->ApplicationId = "IPC0"; - // DBus - config->DBus.ContextId = "ALL"; - config->DBus.BusType = 0; - config->DBus.FilterCount = 0; + // DBus + config->DBus.ContextId = "ALL"; + config->DBus.BusType = 0; + config->DBus.FilterCount = 0; } @@ -137,114 +137,114 @@ void init_configuration(DltDBusConfiguration *config) */ int read_configuration_file(DltDBusConfiguration *config, char *file_name) { - FILE *file; - char *line, *token, *value, *filter, *pch; - int ret = 0; - char *filterBegin,*filterEnd; - - init_configuration(config); - - file = fopen(file_name, "r"); - - if(file == NULL) - { - fprintf(stderr, "dlt-dbus-options, could not open configuration file.\n"); - return -1; - } - - line = malloc(MAX_LINE); - token = malloc(MAX_LINE); - value = malloc(MAX_LINE); - filter = malloc(MAX_LINE); - - MALLOC_ASSERT(line); - MALLOC_ASSERT(token); - MALLOC_ASSERT(value); - MALLOC_ASSERT(filter); - - while(fgets(line, MAX_LINE, file) != NULL) - { - token[0] = 0; - value[0] = 0; - filter[0] = 0; - - filterBegin = strchr(line,'='); - filterEnd = strpbrk (line,"\r\n"); - - if(filterBegin) - { - if(filterEnd && (filterEnd>filterBegin)) - { - strncpy(filter,filterBegin+1,filterEnd-filterBegin-1); - filter[filterEnd-filterBegin-1]=0; - } - else - { - strcpy(filter,filterBegin+1); - } - } - - pch = strtok (line, " =\r\n"); - while(pch != NULL) - { - if(pch[0] == '#') - break; - - if(token[0] == 0) - { - strncpy(token, pch, MAX_LINE-1); - token[MAX_LINE-1]=0; - } - else - { - strncpy(value, pch, MAX_LINE); - value[MAX_LINE-1]=0; - break; - } - - pch = strtok (NULL, " =\r\n"); - } - - if(token[0] && value[0]) - { - // Common - if(strcmp(token, "ApplicationId") == 0) - { - config->ApplicationId = malloc(strlen(value)+1); - MALLOC_ASSERT(config->ApplicationId); - strcpy(config->ApplicationId, value); /* strcpy unritical here, because size matches exactly the size to be copied */ - } - // ContextId - else if(strcmp(token, "ContextId") == 0) - { - config->DBus.ContextId = malloc(strlen(value)+1); - MALLOC_ASSERT(config->DBus.ContextId); - strcpy(config->DBus.ContextId, value); /* strcpy unritical here, because size matches exactly the size to be copied */ - } - // BusType - else if(strcmp(token, "BusType") == 0) - { - config->DBus.BusType = malloc(strlen(value)+1); - MALLOC_ASSERT(config->DBus.BusType); - strcpy(config->DBus.BusType, value); /* strcpy unritical here, because size matches exactly the size to be copied */ - } - // BusType - else if(strcmp(token, "FilterMatch") == 0) - { - if(config->DBus.FilterCountDBus.FilterMatch[config->DBus.FilterCount]= malloc(strlen(filter)+1); - MALLOC_ASSERT(config->DBus.FilterMatch[config->DBus.FilterCount]); - strcpy(config->DBus.FilterMatch[config->DBus.FilterCount], filter); - config->DBus.FilterCount++; - } - } - } - } - fclose(file); - free(value); - free(token); - free(filter); - free(line); - return ret; + FILE *file; + char *line, *token, *value, *filter, *pch; + int ret = 0; + char *filterBegin,*filterEnd; + + init_configuration(config); + + file = fopen(file_name, "r"); + + if(file == NULL) + { + fprintf(stderr, "dlt-dbus-options, could not open configuration file.\n"); + return -1; + } + + line = malloc(MAX_LINE); + token = malloc(MAX_LINE); + value = malloc(MAX_LINE); + filter = malloc(MAX_LINE); + + MALLOC_ASSERT(line); + MALLOC_ASSERT(token); + MALLOC_ASSERT(value); + MALLOC_ASSERT(filter); + + while(fgets(line, MAX_LINE, file) != NULL) + { + token[0] = 0; + value[0] = 0; + filter[0] = 0; + + filterBegin = strchr(line,'='); + filterEnd = strpbrk (line,"\r\n"); + + if(filterBegin) + { + if(filterEnd && (filterEnd>filterBegin)) + { + strncpy(filter,filterBegin+1,filterEnd-filterBegin-1); + filter[filterEnd-filterBegin-1]=0; + } + else + { + strcpy(filter,filterBegin+1); + } + } + + pch = strtok (line, " =\r\n"); + while(pch != NULL) + { + if(pch[0] == '#') + break; + + if(token[0] == 0) + { + strncpy(token, pch, MAX_LINE-1); + token[MAX_LINE-1]=0; + } + else + { + strncpy(value, pch, MAX_LINE); + value[MAX_LINE-1]=0; + break; + } + + pch = strtok (NULL, " =\r\n"); + } + + if(token[0] && value[0]) + { + // Common + if(strcmp(token, "ApplicationId") == 0) + { + config->ApplicationId = malloc(strlen(value)+1); + MALLOC_ASSERT(config->ApplicationId); + strcpy(config->ApplicationId, value); /* strcpy unritical here, because size matches exactly the size to be copied */ + } + // ContextId + else if(strcmp(token, "ContextId") == 0) + { + config->DBus.ContextId = malloc(strlen(value)+1); + MALLOC_ASSERT(config->DBus.ContextId); + strcpy(config->DBus.ContextId, value); /* strcpy unritical here, because size matches exactly the size to be copied */ + } + // BusType + else if(strcmp(token, "BusType") == 0) + { + config->DBus.BusType = malloc(strlen(value)+1); + MALLOC_ASSERT(config->DBus.BusType); + strcpy(config->DBus.BusType, value); /* strcpy unritical here, because size matches exactly the size to be copied */ + } + // BusType + else if(strcmp(token, "FilterMatch") == 0) + { + if(config->DBus.FilterCountDBus.FilterMatch[config->DBus.FilterCount]= malloc(strlen(filter)+1); + MALLOC_ASSERT(config->DBus.FilterMatch[config->DBus.FilterCount]); + strcpy(config->DBus.FilterMatch[config->DBus.FilterCount], filter); + config->DBus.FilterCount++; + } + } + } + } + fclose(file); + free(value); + free(token); + free(filter); + free(line); + return ret; } diff --git a/src/dbus/dlt-dbus.c b/src/dbus/dlt-dbus.c index 2b99a4e..f85252f 100644 --- a/src/dbus/dlt-dbus.c +++ b/src/dbus/dlt-dbus.c @@ -80,96 +80,96 @@ filter_func (DBusConnection *con, int main (int argc, char *argv[]) { - DltDBusCliOptions options; - DltDBusConfiguration config; - - DBusConnection *connection; - DBusError error; - DBusBusType type; - - int num; - - if(read_command_line(&options, argc, argv) < 0) - { - fprintf(stderr, "Failed to read command line!\n"); - return -1; - } - - if(read_configuration_file(&config, options.ConfigurationFileName) < 0) - { - fprintf(stderr, "Failed to read configuration file!\n"); - return -1; - } - - // register application - if(options.ApplicationId) - DLT_REGISTER_APP (options.ApplicationId, "DBus Logging"); - else - DLT_REGISTER_APP (config.ApplicationId, "DBus Logging"); - - // register context - DLT_REGISTER_CONTEXT_LL_TS(dbusContext, config.DBus.ContextId, "DBus Context for Logging",DLT_LOG_INFO,DLT_TRACE_STATUS_ON); - DLT_REGISTER_CONTEXT(dbusLog, "Log", "DBus Context for Logging Generic information"); - - // initialise error handler - dbus_error_init (&error); - - // set DBus bus type - if(options.BusType) - type = (DBusBusType) atoi(options.BusType); - else - type = (DBusBusType) atoi(config.DBus.BusType); - - // get connection - connection = dbus_bus_get (type, &error); - - if(type==0) - DLT_LOG(dbusLog,DLT_LOG_INFO,DLT_STRING("BusType"),DLT_STRING("Session Bus")); - else if(type==1) - DLT_LOG(dbusLog,DLT_LOG_INFO,DLT_STRING("BusType"),DLT_STRING("System Bus")); - else - DLT_LOG(dbusLog,DLT_LOG_INFO,DLT_STRING("BusType"),DLT_INT(type)); - - if (NULL == connection) - { - fprintf (stderr, "Failed to open connection to %d: %s\n", - DBUS_BUS_SYSTEM, - error.message); - dbus_error_free (&error); - exit (1); - } - - for(num=0;num