ldap/servers/plugins/sync/sync_persist.c | 2 +-
ldap/servers/plugins/sync/sync_refresh.c | 5 +++++
ldap/servers/plugins/sync/sync_util.c | 23 ++++++++++++++++++++---
3 files changed, 26 insertions(+), 4 deletions(-)
New commits:
commit 5862d6ceeb64018d9134e1bd9a5e12ca47738bee
Author: Ludwig Krispenz <lkrispen(a)redhat.com>
Date: Tue Oct 1 14:56:36 2013 +0200
Fix for coverty issues 12028,12029,12030
diff --git a/ldap/servers/plugins/sync/sync_persist.c
b/ldap/servers/plugins/sync/sync_persist.c
index d35dde9..7cd65c8 100644
--- a/ldap/servers/plugins/sync/sync_persist.c
+++ b/ldap/servers/plugins/sync/sync_persist.c
@@ -582,7 +582,7 @@ sync_send_results( void *arg )
char **noattrs = NULL;
LDAPControl **ectrls = NULL;
Slapi_Entry *ec;
- int chg_type;
+ int chg_type = LDAP_SYNC_NONE;
/* deque one element */
PR_Lock( req->req_lock );
diff --git a/ldap/servers/plugins/sync/sync_refresh.c
b/ldap/servers/plugins/sync/sync_refresh.c
index 1487289..71a0edd 100644
--- a/ldap/servers/plugins/sync/sync_refresh.c
+++ b/ldap/servers/plugins/sync/sync_refresh.c
@@ -457,6 +457,10 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void
*cb_data)
int index = 0;
Sync_CallBackData *cb = (Sync_CallBackData *) cb_data;
+ if (cb == NULL) {
+ return(1);
+ }
+
uniqueid = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_UNIQUEID);
chgtype = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHGTYPE);
chgnr = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHANGENUMBER);
@@ -465,6 +469,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
slapi_log_error (SLAPI_LOG_FATAL, SYNC_PLUGIN_SUBSYSTEM,
"Retro Changelog does not provied nsuniquedid."
"Check RCL plugin configuration." );
+ return(1);
}
diff --git a/ldap/servers/plugins/sync/sync_util.c
b/ldap/servers/plugins/sync/sync_util.c
index 9e98561..5ec5e5d 100644
--- a/ldap/servers/plugins/sync/sync_util.c
+++ b/ldap/servers/plugins/sync/sync_util.c
@@ -80,8 +80,25 @@ sync_parse_control_value( struct berval *psbvp, ber_int_t *mode, int
*reload, ch
if ( ber_scanf( ber, "{e", mode ) == LBER_ERROR )
{
rc= LDAP_PROTOCOL_ERROR;
- } else if ( ber_scanf( ber, "a", cookie ) != LBER_ERROR )
- ber_scanf( ber, "b}", reload );
+ } else {
+ ber_tag_t tag;
+ ber_len_t len;
+ tag = ber_peek_tag( ber, &len );
+ if ( tag == LDAP_TAG_SYNC_COOKIE ) {
+ rc = ber_scanf( ber, "a", cookie );
+ tag = ber_peek_tag( ber, &len );
+ }
+ if (rc != LBER_ERROR && tag == LDAP_TAG_RELOAD_HINT ) {
+ rc = ber_scanf( ber, "b", reload );
+ }
+ if (rc != LBER_ERROR) {
+ rc = ber_scanf( ber, "}");
+ }
+ if (rc == LBER_ERROR) {
+
+ rc= LDAP_PROTOCOL_ERROR;
+ };
+ }
/* the ber encoding is no longer needed */
ber_free(ber,1);
@@ -147,7 +164,7 @@ sync_create_state_control( Slapi_Entry *e, LDAPControl **ctrlp, int
type, Sync_C
Slapi_Attr *attr;
Slapi_Value *val;
- if ( ctrlp == NULL || ( ber = der_alloc()) == NULL ) {
+ if ( type == LDAP_SYNC_NONE || ctrlp == NULL || ( ber = der_alloc()) == NULL ) {
return( LDAP_OPERATIONS_ERROR );
}
Show replies by thread