From 0e452a02f1583b0d3ef86aaeb73fc665f3a8f6c0 Mon Sep 17 00:00:00 2001 From: Toby Peterson Date: Tue, 5 Aug 2014 08:58:49 +0200 Subject: darwinssl: don't use strtok() The GetDarwinVersionNumber() function uses strtok, which is not thread-safe. --- lib/vtls/curl_darwinssl.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/vtls/curl_darwinssl.c b/lib/vtls/curl_darwinssl.c index 480e06e6b..bfa5c6acd 100644 --- a/lib/vtls/curl_darwinssl.c +++ b/lib/vtls/curl_darwinssl.c @@ -30,6 +30,7 @@ #include "urldata.h" /* for the SessionHandle definition */ #include "curl_base64.h" +#include "strtok.h" #ifdef USE_DARWINSSL @@ -782,6 +783,7 @@ CF_INLINE void GetDarwinVersionNumber(int *major, int *minor) char *os_version; size_t os_version_len; char *os_version_major, *os_version_minor/*, *os_version_point*/; + char *tok_buf; /* Get the Darwin kernel version from the kernel using sysctl(): */ mib[0] = CTL_KERN; @@ -797,9 +799,9 @@ CF_INLINE void GetDarwinVersionNumber(int *major, int *minor) } /* Parse the version: */ - os_version_major = strtok(os_version, "."); - os_version_minor = strtok(NULL, "."); - /*os_version_point = strtok(NULL, ".");*/ + os_version_major = strtok_r(os_version, ".", &tok_buf); + os_version_minor = strtok_r(NULL, ".", &tok_buf); + /*os_version_point = strtok_r(NULL, ".", &tok_buf);*/ *major = atoi(os_version_major); *minor = atoi(os_version_minor); free(os_version); -- cgit v1.2.3