Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joe Martin
OpenLDAP
Commits
cde56fad
Commit
cde56fad
authored
Jun 11, 2019
by
Ondřej Kuzník
Committed by
Quanah Gibson-Mount
Jun 13, 2019
Browse files
ITS#7996 Tighten race in ldap_int_initialize
parent
e5f945ba
Changes
1
Hide whitespace changes
Inline
Side-by-side
libraries/libldap/init.c
View file @
cde56fad
...
...
@@ -516,15 +516,6 @@ ldap_int_destroy_global_options(void)
*/
void
ldap_int_initialize_global_options
(
struct
ldapoptions
*
gopts
,
int
*
dbglvl
)
{
#ifdef LDAP_R_COMPILE
LDAP_PVT_MUTEX_FIRSTCREATE
(
gopts
->
ldo_mutex
);
#endif
LDAP_MUTEX_LOCK
(
&
gopts
->
ldo_mutex
);
if
(
gopts
->
ldo_valid
==
LDAP_INITIALIZED
)
{
/* someone else got here first */
LDAP_MUTEX_UNLOCK
(
&
gopts
->
ldo_mutex
);
return
;
}
if
(
dbglvl
)
gopts
->
ldo_debug
=
*
dbglvl
;
else
...
...
@@ -588,7 +579,6 @@ void ldap_int_initialize_global_options( struct ldapoptions *gopts, int *dbglvl
gopts
->
ldo_keepalive_idle
=
0
;
gopts
->
ldo_valid
=
LDAP_INITIALIZED
;
LDAP_MUTEX_UNLOCK
(
&
gopts
->
ldo_mutex
);
return
;
}
...
...
@@ -598,7 +588,14 @@ char * ldap_int_hostname = NULL;
void
ldap_int_initialize
(
struct
ldapoptions
*
gopts
,
int
*
dbglvl
)
{
#ifdef LDAP_R_COMPILE
LDAP_PVT_MUTEX_FIRSTCREATE
(
gopts
->
ldo_mutex
);
#endif
LDAP_MUTEX_LOCK
(
&
gopts
->
ldo_mutex
);
if
(
gopts
->
ldo_valid
==
LDAP_INITIALIZED
)
{
/* someone else got here first */
LDAP_MUTEX_UNLOCK
(
&
gopts
->
ldo_mutex
);
return
;
}
...
...
@@ -614,7 +611,7 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
if
(
WSAStartup
(
wVersionRequested
,
&
wsaData
)
!=
0
)
{
/* Tell the user that we couldn't find a usable */
/* WinSock DLL. */
return
;
goto
done
;
}
/* Confirm that the WinSock DLL supports 2.0.*/
...
...
@@ -629,13 +626,13 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
/* Tell the user that we couldn't find a usable */
/* WinSock DLL. */
WSACleanup
(
);
return
;
goto
done
;
}
}
/* The WinSock DLL is acceptable. Proceed. */
#elif defined(HAVE_WINSOCK)
{
WSADATA
wsaData
;
if
(
WSAStartup
(
0x0101
,
&
wsaData
)
!=
0
)
{
return
;
goto
done
;
}
}
#endif
...
...
@@ -660,14 +657,14 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
#ifdef HAVE_CYRUS_SASL
if
(
ldap_int_sasl_init
()
!=
0
)
{
return
;
goto
done
;
}
#endif
ldap_int_initialize_global_options
(
gopts
,
dbglvl
);
if
(
getenv
(
"LDAPNOINIT"
)
!=
NULL
)
{
return
;
goto
done
;
}
#ifdef HAVE_CYRUS_SASL
...
...
@@ -688,7 +685,7 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
#ifdef HAVE_GETEUID
if
(
geteuid
()
!=
getuid
()
)
return
;
goto
done
;
#endif
openldap_ldap_init_w_userconf
(
LDAP_USERRC_FILE
);
...
...
@@ -720,4 +717,7 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
}
openldap_ldap_init_w_env
(
gopts
,
NULL
);
done:
LDAP_MUTEX_UNLOCK
(
&
gopts
->
ldo_mutex
);
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment