Repository: trafficserver Updated Branches: refs/heads/master fcc4fca7c -> bbadeae60
replace strtok with thread-safe strtok_r This closes #112 Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/bbadeae6 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/bbadeae6 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/bbadeae6 Branch: refs/heads/master Commit: bbadeae6036bf120ad55f5fa287b8d9e26e4eff3 Parents: fcc4fca Author: Pavlo Yatsukhnenko <yatsukhne...@gmail.com> Authored: Fri Sep 12 21:24:20 2014 +0300 Committer: James Peach <jpe...@apache.org> Committed: Fri Sep 12 16:15:53 2014 -0700 ---------------------------------------------------------------------- example/protocol/TxnSM.c | 4 ++-- example/secure-link/secure-link.c | 6 +++--- proxy/logging/LogFormat.cc | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/bbadeae6/example/protocol/TxnSM.c ---------------------------------------------------------------------- diff --git a/example/protocol/TxnSM.c b/example/protocol/TxnSM.c index 70fd63f..2eb49b8 100644 --- a/example/protocol/TxnSM.c +++ b/example/protocol/TxnSM.c @@ -948,13 +948,13 @@ is_request_end(char *buf) int parse_request(char *request, char *server_name, char *file_name) { - char *temp = strtok(request, " "); + char *saveptr, *temp = strtok_r(request, " ", &saveptr); if (temp != NULL) TSstrlcpy(server_name, temp, MAX_SERVER_NAME_LENGTH + 1); else return 0; - temp = strtok(NULL, " "); + temp = strtok_r(NULL, " ", &saveptr); if (temp != NULL) TSstrlcpy(file_name, temp, MAX_FILE_NAME_LENGTH + 1); else http://git-wip-us.apache.org/repos/asf/trafficserver/blob/bbadeae6/example/secure-link/secure-link.c ---------------------------------------------------------------------- diff --git a/example/secure-link/secure-link.c b/example/secure-link/secure-link.c index 1767918..ef1f03e 100644 --- a/example/secure-link/secure-link.c +++ b/example/secure-link/secure-link.c @@ -48,10 +48,10 @@ TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo* rri) MD5_CTX ctx; struct sockaddr_in *in; const char *qh, *ph, *ip; - char *s, *ptr, *val, hash[32]; unsigned char md[MD5_DIGEST_LENGTH]; secure_link_info *sli = (secure_link_info *)ih; char *token = NULL, *expire = NULL, *path = NULL; + char *s, *ptr, *saveptr = NULL, *val, hash[32] = ""; in = (struct sockaddr_in *)TSHttpTxnClientAddrGet(rh); ip = inet_ntoa(in->sin_addr); @@ -62,7 +62,7 @@ TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo* rri) qh = TSUrlHttpQueryGet(rri->requestBufp, rri->requestUrl, &len); if(qh && len > 0) { s = (char *)TSstrndup(qh, len); - if((ptr = strtok(s, "&")) != NULL) { + if((ptr = strtok_r(s, "&", &saveptr)) != NULL) { do { if((val = strchr(ptr, '=')) != NULL) { *val++ = '\0'; @@ -75,7 +75,7 @@ TSRemapDoRemap(void *ih, TSHttpTxn rh, TSRemapRequestInfo* rri) TSError("Invalid parameter [%s]", ptr); break; } - } while((ptr = strtok(NULL, "&")) != NULL); + } while((ptr = strtok_r(NULL, "&", &saveptr)) != NULL); } else { TSError("strtok didn't find a & in the query string"); /* this is just example, so set fake params to prevent plugin crash */ http://git-wip-us.apache.org/repos/asf/trafficserver/blob/bbadeae6/proxy/logging/LogFormat.cc ---------------------------------------------------------------------- diff --git a/proxy/logging/LogFormat.cc b/proxy/logging/LogFormat.cc index db371d7..e82accb 100644 --- a/proxy/logging/LogFormat.cc +++ b/proxy/logging/LogFormat.cc @@ -432,7 +432,7 @@ LogFormat::parse_symbol_string(const char *symbol_string, LogFieldList *field_li char *sym_str; int field_count = 0; LogField *f; - char *symbol, *name, *sym; + char *symbol, *name, *sym, *saveptr; LogField::Container container; LogField::Aggregate aggregate; @@ -444,10 +444,10 @@ LogFormat::parse_symbol_string(const char *symbol_string, LogFieldList *field_li *contains_aggregates = false; // we'll change if it does // - // strtok will mangle the input string; we'll make a copy for that. + // strtok_r will mangle the input string; we'll make a copy for that. // sym_str = ats_strdup(symbol_string); - symbol = strtok(sym_str, ","); + symbol = strtok_r(sym_str, ",", &saveptr); while (symbol != NULL) { // @@ -546,7 +546,7 @@ LogFormat::parse_symbol_string(const char *symbol_string, LogFieldList *field_li // // Get the next symbol // - symbol = strtok(NULL, ","); + symbol = strtok_r(NULL, ",", &saveptr); } ats_free(sym_str);