From fc49135a367e90d8fccbe9ad43c07c61340a74c7 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Fri, 1 Jan 1999 23:03:48 +0000 Subject: [PATCH] Import unprotected strtok fix from -devel. Yes, you have to edit 8 files to add a simple mutex. Should be two (proto-slap.h & init.c). --- servers/slapd/charray.c | 6 ++++++ servers/slapd/init.c | 1 + servers/slapd/main.c | 1 + servers/slapd/proto-slap.h | 1 + servers/slapd/tools/ldbmtest.c | 1 + servers/slapd/tools/ldif2id2children.c | 1 + servers/slapd/tools/ldif2id2entry.c | 1 + servers/slapd/tools/ldif2index.c | 1 + servers/slapd/tools/ldif2ldbm.c | 1 + 9 files changed, 14 insertions(+) diff --git a/servers/slapd/charray.c b/servers/slapd/charray.c index c2eb56ceaa..e3974e4ac0 100644 --- a/servers/slapd/charray.c +++ b/servers/slapd/charray.c @@ -128,10 +128,16 @@ str2charray( char *str, char *brkstr ) res = (char **) ch_malloc( (i + 1) * sizeof(char *) ); i = 0; + + pthread_mutex_lock(&strtok_mutex); + for ( s = strtok( str, brkstr ); s != NULL; s = strtok( NULL, brkstr ) ) { res[i++] = ch_strdup( s ); } + + pthread_mutex_unlock(&strtok_mutex); + res[i] = NULL; free( str ); diff --git a/servers/slapd/init.c b/servers/slapd/init.c index e93479432c..5921fd59f8 100644 --- a/servers/slapd/init.c +++ b/servers/slapd/init.c @@ -17,6 +17,7 @@ init( void ) pthread_mutex_init( &active_threads_mutex, pthread_mutexattr_default ); pthread_mutex_init( &new_conn_mutex, pthread_mutexattr_default ); pthread_mutex_init( ¤ttime_mutex, pthread_mutexattr_default ); + pthread_mutex_init( &strtok_mutex, pthread_mutexattr_default ); pthread_mutex_init( &entry2str_mutex, pthread_mutexattr_default ); pthread_mutex_init( &replog_mutex, pthread_mutexattr_default ); pthread_mutex_init( &ops_mutex, pthread_mutexattr_default ); diff --git a/servers/slapd/main.c b/servers/slapd/main.c index 106617fa06..b06198a62d 100644 --- a/servers/slapd/main.c +++ b/servers/slapd/main.c @@ -36,6 +36,7 @@ char **g_argv; */ time_t currenttime; pthread_mutex_t currenttime_mutex; +pthread_mutex_t strtok_mutex; int active_threads; pthread_mutex_t active_threads_mutex; pthread_mutex_t new_conn_mutex; diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index 61c9f45aae..382f2dbe03 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -241,6 +241,7 @@ extern long ops_completed; extern long ops_initiated; extern pthread_mutex_t active_threads_mutex; extern pthread_mutex_t currenttime_mutex; +extern pthread_mutex_t strtok_mutex; extern pthread_mutex_t entry2str_mutex; extern pthread_mutex_t new_conn_mutex; extern pthread_mutex_t num_sent_mutex; diff --git a/servers/slapd/tools/ldbmtest.c b/servers/slapd/tools/ldbmtest.c index 0868b97d0c..70989a013a 100644 --- a/servers/slapd/tools/ldbmtest.c +++ b/servers/slapd/tools/ldbmtest.c @@ -49,6 +49,7 @@ pthread_mutex_t entry2str_mutex; pthread_mutex_t active_threads_mutex; pthread_mutex_t new_conn_mutex; pthread_mutex_t currenttime_mutex; +pthread_mutex_t strtok_mutex; pthread_mutex_t replog_mutex; pthread_mutex_t ops_mutex; pthread_mutex_t regex_mutex; diff --git a/servers/slapd/tools/ldif2id2children.c b/servers/slapd/tools/ldif2id2children.c index 07e2b61638..42639726f9 100644 --- a/servers/slapd/tools/ldif2id2children.c +++ b/servers/slapd/tools/ldif2id2children.c @@ -31,6 +31,7 @@ pthread_mutex_t entry2str_mutex; pthread_mutex_t active_threads_mutex; pthread_mutex_t new_conn_mutex; pthread_mutex_t currenttime_mutex; +pthread_mutex_t strtok_mutex; pthread_mutex_t replog_mutex; pthread_mutex_t ops_mutex; pthread_mutex_t regex_mutex; diff --git a/servers/slapd/tools/ldif2id2entry.c b/servers/slapd/tools/ldif2id2entry.c index 391988207f..9ba4b71e58 100644 --- a/servers/slapd/tools/ldif2id2entry.c +++ b/servers/slapd/tools/ldif2id2entry.c @@ -28,6 +28,7 @@ pthread_mutex_t entry2str_mutex; pthread_mutex_t active_threads_mutex; pthread_mutex_t new_conn_mutex; pthread_mutex_t currenttime_mutex; +pthread_mutex_t strtok_mutex; pthread_mutex_t replog_mutex; pthread_mutex_t ops_mutex; pthread_mutex_t regex_mutex; diff --git a/servers/slapd/tools/ldif2index.c b/servers/slapd/tools/ldif2index.c index ab05644cbc..a14ecae663 100644 --- a/servers/slapd/tools/ldif2index.c +++ b/servers/slapd/tools/ldif2index.c @@ -30,6 +30,7 @@ pthread_mutex_t entry2str_mutex; pthread_mutex_t active_threads_mutex; pthread_mutex_t new_conn_mutex; pthread_mutex_t currenttime_mutex; +pthread_mutex_t strtok_mutex; pthread_mutex_t replog_mutex; pthread_mutex_t ops_mutex; pthread_mutex_t regex_mutex; diff --git a/servers/slapd/tools/ldif2ldbm.c b/servers/slapd/tools/ldif2ldbm.c index c55cd20c3a..b80a18c943 100644 --- a/servers/slapd/tools/ldif2ldbm.c +++ b/servers/slapd/tools/ldif2ldbm.c @@ -34,6 +34,7 @@ pthread_mutex_t entry2str_mutex; pthread_mutex_t active_threads_mutex; pthread_mutex_t new_conn_mutex; pthread_mutex_t currenttime_mutex; +pthread_mutex_t strtok_mutex; pthread_mutex_t replog_mutex; pthread_mutex_t ops_mutex; pthread_mutex_t regex_mutex; -- 2.47.2