Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
openldap
OpenLDAP
Commits
793905d0
Commit
793905d0
authored
Oct 18, 2007
by
Quanah Gibson-Mount
Browse files
db config validity check
error message propagation fix
parent
f01622d5
Changes
2
Hide whitespace changes
Inline
Side-by-side
servers/slapd/back-bdb/config.c
View file @
793905d0
...
...
@@ -19,6 +19,7 @@
#include
<stdio.h>
#include
<ac/ctype.h>
#include
<ac/string.h>
#include
<ac/errno.h>
#include
"back-bdb.h"
...
...
@@ -331,8 +332,11 @@ bdb_cf_cleanup( ConfigArgs *c )
/* If this fails, we need to restart */
if
(
rc
)
{
slapd_shutdown
=
2
;
snprintf
(
c
->
cr_msg
,
sizeof
(
c
->
cr_msg
),
"failed to reopen database, rc=%d"
,
rc
);
Debug
(
LDAP_DEBUG_ANY
,
LDAP_XSTRING
(
bdb_cf_cleanup
)
": failed to reopen database, rc=%d"
,
rc
,
0
,
0
);
": %s
\n
"
,
c
->
cr_msg
,
0
,
0
);
rc
=
LDAP_OTHER
;
}
}
return
rc
;
...
...
@@ -614,7 +618,26 @@ bdb_cf_gen( ConfigArgs *c )
case
BDB_DIRECTORY
:
{
FILE
*
f
;
char
*
ptr
;
char
*
ptr
,
*
testpath
;
int
len
;
len
=
strlen
(
c
->
value_string
);
testpath
=
ch_malloc
(
len
+
STRLENOF
(
LDAP_DIRSEP
)
+
STRLENOF
(
"DUMMY"
)
+
1
);
ptr
=
lutil_strcopy
(
testpath
,
c
->
value_string
);
*
ptr
++
=
LDAP_DIRSEP
[
0
];
strcpy
(
ptr
,
"DUMMY"
);
f
=
fopen
(
testpath
,
"w"
);
if
(
f
)
{
fclose
(
f
);
unlink
(
testpath
);
}
ch_free
(
testpath
);
if
(
!
f
)
{
snprintf
(
c
->
cr_msg
,
sizeof
(
c
->
cr_msg
),
"%s: invalid path: %s"
,
c
->
log
,
strerror
(
errno
));
Debug
(
LDAP_DEBUG_ANY
,
"%s
\n
"
,
c
->
cr_msg
,
0
,
0
);
return
-
1
;
}
if
(
bdb
->
bi_dbenv_home
)
ch_free
(
bdb
->
bi_dbenv_home
);
...
...
@@ -623,7 +646,7 @@ bdb_cf_gen( ConfigArgs *c )
/* See if a DB_CONFIG file already exists here */
if
(
bdb
->
bi_db_config_path
)
ch_free
(
bdb
->
bi_db_config_path
);
bdb
->
bi_db_config_path
=
ch_malloc
(
strlen
(
bdb
->
bi_dbenv_home
)
+
bdb
->
bi_db_config_path
=
ch_malloc
(
len
+
STRLENOF
(
LDAP_DIRSEP
)
+
STRLENOF
(
"DB_CONFIG"
)
+
1
);
ptr
=
lutil_strcopy
(
bdb
->
bi_db_config_path
,
bdb
->
bi_dbenv_home
);
*
ptr
++
=
LDAP_DIRSEP
[
0
];
...
...
servers/slapd/bconfig.c
View file @
793905d0
...
...
@@ -77,6 +77,7 @@ typedef struct {
static
CfBackInfo
cfBackInfo
;
static
char
*
passwd_salt
;
static
FILE
*
logfile
;
static
char
*
logfileName
;
#ifdef SLAP_AUTH_REWRITE
static
BerVarray
authz_rewrites
;
...
...
@@ -1124,6 +1125,10 @@ config_generic(ConfigArgs *c) {
case
CFG_LOGFILE
:
ch_free
(
logfileName
);
logfileName
=
NULL
;
if
(
logfile
)
{
fclose
(
logfile
);
logfile
=
NULL
;
}
break
;
case
CFG_SERVERID
:
{
...
...
@@ -1683,7 +1688,6 @@ sortval_reject:
}
break
;
case
CFG_LOGFILE
:
{
FILE
*
logfile
;
if
(
logfileName
)
ch_free
(
logfileName
);
logfileName
=
c
->
value_string
;
logfile
=
fopen
(
logfileName
,
"w"
);
...
...
@@ -4826,6 +4830,7 @@ config_modify_internal( CfEntryInfo *ce, Operation *op, SlapReply *rs,
out:
/* Undo for a failed operation */
if
(
rc
!=
LDAP_SUCCESS
)
{
ConfigReply
msg
=
ca
->
reply
;
for
(
s
=
save_attrs
;
s
;
s
=
s
->
a_next
)
{
if
(
s
->
a_flags
&
SLAP_ATTR_IXDEL
)
{
s
->
a_flags
&=
~
(
SLAP_ATTR_IXDEL
|
SLAP_ATTR_IXADD
);
...
...
@@ -4862,6 +4867,7 @@ out:
}
}
}
ca
->
reply
=
msg
;
}
if
(
ca
->
cleanup
)
...
...
@@ -4928,8 +4934,7 @@ config_back_modify( Operation *op, SlapReply *rs )
slap_mods_opattrs
(
op
,
&
op
->
orm_modlist
,
1
);
if
(
!
slapd_shutdown
)
ldap_pvt_thread_pool_pause
(
&
connection_pool
);
ldap_pvt_thread_pool_pause
(
&
connection_pool
);
/* Strategy:
* 1) perform the Modify on the cached Entry.
...
...
@@ -4961,8 +4966,7 @@ config_back_modify( Operation *op, SlapReply *rs )
op
->
o_ndn
=
ndn
;
}
if
(
!
slapd_shutdown
)
ldap_pvt_thread_pool_resume
(
&
connection_pool
);
ldap_pvt_thread_pool_resume
(
&
connection_pool
);
out:
send_ldap_result
(
op
,
rs
);
slap_graduate_commit_csn
(
op
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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