email plugin: Use strtok_r() instead of strtok().
authorSebastian Harl <sh@tokkee.org>
Thu, 30 Nov 2006 11:02:46 +0000 (12:02 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Sat, 2 Dec 2006 17:02:43 +0000 (18:02 +0100)
strtok() internally uses a static buffer and thus is not thread-safe.

Signed-off-by: Sebastian Harl <sh@tokkee.org>
src/email.c

index 27370ae..37194fb 100644 (file)
@@ -361,8 +361,9 @@ static void *collect (void *arg)
                }
 
                if ('e' == line[0]) { /* e:<type>:<bytes> */
-                       char *type = strtok (line + 2, ":");
-                       char *tmp  = strtok (NULL, ":");
+                       char *ptr  = NULL;
+                       char *type = strtok_r (line + 2, ":", &ptr);
+                       char *tmp  = strtok_r (NULL, ":", &ptr);
                        int  bytes = 0;
 
                        if (NULL == tmp) {
@@ -389,13 +390,14 @@ static void *collect (void *arg)
                        pthread_mutex_unlock (&score_mutex);
                }
                else if ('c' == line[0]) { /* c:<type1>[,<type2>,...] */
-                       char *type = strtok (line + 2, ",");
+                       char *ptr  = NULL;
+                       char *type = strtok_r (line + 2, ",", &ptr);
 
                        do {
                                pthread_mutex_lock (&check_mutex);
                                type_list_incr (&check, type, 1);
                                pthread_mutex_unlock (&check_mutex);
-                       } while (NULL != (type = strtok (NULL, ",")));
+                       } while (NULL != (type = strtok_r (NULL, ",", &ptr)));
                }
                else {
                        syslog (LOG_ERR, "email: unknown type '%c'", line[0]);