]> granicus.if.org Git - curl/commitdiff
darwinssl: don't use strtok()
authorToby Peterson <toby@apple.com>
Tue, 5 Aug 2014 06:58:49 +0000 (08:58 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 5 Aug 2014 06:58:49 +0000 (08:58 +0200)
The GetDarwinVersionNumber() function uses strtok, which is not
thread-safe.

lib/vtls/curl_darwinssl.c

index 480e06e6bd0614b4d3f55c7e89b1a93c7b4730dc..bfa5c6acdcda73df7ee545d0efe7a1d0d0d960de 100644 (file)
@@ -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);