From 1e5bc3778032e2d07cb7b396c2ff99b54b87dc18 Mon Sep 17 00:00:00 2001 From: Mark Riddoch Date: Wed, 3 Dec 2014 09:33:55 +0000 Subject: [PATCH] Use strtok_r rather than strtok --- server/core/config.c | 42 ++++++++++++++------------------ server/modules/filter/mqfilter.c | 16 ++++++------ 2 files changed, 27 insertions(+), 31 deletions(-) diff --git a/server/core/config.c b/server/core/config.c index 737781d7f..61d7a6b98 100644 --- a/server/core/config.c +++ b/server/core/config.c @@ -590,11 +590,12 @@ int error_count = 0; } if (obj->element && options) { - char *s = strtok(options, ","); + char *lasts; + char *s = strtok_r(options, ",", &lasts); while (s) { filterAddOption(obj->element, s); - s = strtok(NULL, ","); + s = strtok_r(NULL, ",", &lasts); } } if (obj->element) @@ -640,7 +641,8 @@ int error_count = 0; router = config_get_value(obj->parameters, "router"); if (servers && obj->element) { - char *s = strtok(servers, ","); + char *lasts; + char *s = strtok_r(servers, ",", &lasts); while (s) { CONFIG_CONTEXT *obj1 = context; @@ -667,7 +669,7 @@ int error_count = 0; "service '%s'.", s, obj->object))); } - s = strtok(NULL, ","); + s = strtok_r(NULL, ",", &lasts); } } else if (servers == NULL && internalService(router) == 0) @@ -681,11 +683,12 @@ int error_count = 0; } if (roptions && obj->element) { - char *s = strtok(roptions, ","); + char *lasts; + char *s = strtok_r(roptions, ",", &lasts); while (s) { serviceAddRouterOption(obj->element, s); - s = strtok(NULL, ","); + s = strtok_r(NULL, ",", &lasts); } } if (filters && obj->element) @@ -818,7 +821,7 @@ int error_count = 0; obj->element = monitor_alloc(obj->object, module); if (servers && obj->element) { - char *s; + char *s, *lasts; /* if id is not set, compute it now with pid only */ if (gateway.id == 0) { @@ -853,7 +856,7 @@ int error_count = 0; monitorSetNetworkTimeout(obj->element, MONITOR_WRITE_TIMEOUT, write_timeout); /* get the servers to monitor */ - s = strtok(servers, ","); + s = strtok_r(servers, ",", &lasts); while (s) { CONFIG_CONTEXT *obj1 = context; @@ -880,7 +883,7 @@ int error_count = 0; "monitor '%s'.", s, obj->object))); - s = strtok(NULL, ","); + s = strtok_r(NULL, ",", &lasts); } } if (obj->element && user && passwd) @@ -1529,7 +1532,8 @@ SERVER *server; filters = config_get_value(obj->parameters, "filters"); if (servers && obj->element) { - char *s = strtok(servers, ","); + char *lasts; + char *s = strtok_r(servers, ",", &lasts); while (s) { CONFIG_CONTEXT *obj1 = context; @@ -1559,17 +1563,18 @@ SERVER *server; "service '%s'.", s, obj->object))); } - s = strtok(NULL, ","); + s = strtok_r(NULL, ",", &lasts); } } if (roptions && obj->element) { - char *s = strtok(roptions, ","); + char *lasts; + char *s = strtok_r(roptions, ",", &lasts); serviceClearRouterOptions(obj->element); while (s) { serviceAddRouterOption(obj->element, s); - s = strtok(NULL, ","); + s = strtok_r(NULL, ",", &lasts); } } if (filters && obj->element) @@ -1667,17 +1672,6 @@ static char *service_params[] = NULL }; -static char *server_params[] = - { - "type", - "address", - "port", - "protocol", - "monitorpw", - "monitoruser", - NULL - }; - static char *listener_params[] = { "type", diff --git a/server/modules/filter/mqfilter.c b/server/modules/filter/mqfilter.c index eb69a053f..f88297e8f 100644 --- a/server/modules/filter/mqfilter.c +++ b/server/modules/filter/mqfilter.c @@ -423,8 +423,8 @@ init_conn(MQ_INSTANCE *my_instance) */ char** parse_optstr(char* str, char* tok, int* szstore) { - char* tk = str; - char** arr; + char *lasts, *tk = str; + char **arr; int i = 0, size = 1; while((tk = strpbrk(tk + 1,tok))){ size++; @@ -440,10 +440,10 @@ char** parse_optstr(char* str, char* tok, int* szstore) } *szstore = size; - tk = strtok(str,tok); + tk = strtok_r(str,tok, &lasts); while(tk && i < size){ arr[i++] = strdup(tk); - tk = strtok(NULL,tok); + tk = strtok_r(NULL,tok,&lasts); } return arr; } @@ -1052,7 +1052,8 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue) for(z = 0;zshm_trg->size; i++){ if(strcmp(tmp,my_instance->shm_trg->objects[i]) == 0){ @@ -1103,8 +1104,9 @@ routeQuery(FILTER *instance, void *session, GWBUF *queue) char* tbnm = NULL; if((strchr(sesstbls[j],'.')) != NULL){ - tbnm = strtok(sesstbls[j],"."); - tbnm = strtok(NULL,"."); + char *lasts; + tbnm = strtok_r(sesstbls[j],".",&lasts); + tbnm = strtok_r(NULL,".",&lasts); }else{ tbnm = sesstbls[j]; }