add make check
This commit is contained in:
parent
6043d9b1c4
commit
8e0d5d6fda
95
0001-openldap-bugfix-make-test.patch
Normal file
95
0001-openldap-bugfix-make-test.patch
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
From c88b4c85db310ecd0f2f5bb02478cc56f5590d53 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Quanah Gibson-Mount <quanah@openldap.org>
|
||||||
|
Date: Wed, 3 Oct 2018 20:28:54 +0000
|
||||||
|
Subject: [PATCH] Update test044 to catch ITS#8923
|
||||||
|
|
||||||
|
DTS/AR:
|
||||||
|
reason:
|
||||||
|
---
|
||||||
|
openldap-2.4.46/tests/scripts/test044-dynlist | 30 +++++++++++++++++++++++++++
|
||||||
|
openldap-2.4.46/tests/scripts/defines.sh | 1 +
|
||||||
|
openldap-2.4.46/tests/scripts/test044-dynlist | 8 ++++----
|
||||||
|
3 file changed, 35 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/tests/scripts/test044-dynlist b/tests/scripts/test044-dynlist
|
||||||
|
index 07b65c5..4c6390e 100755
|
||||||
|
--- a/tests/scripts/test044-dynlist
|
||||||
|
+++ b/tests/scripts/test044-dynlist
|
||||||
|
@@ -468,6 +468,36 @@ case $RC in
|
||||||
|
esac
|
||||||
|
echo "" >> $SEARCHOUT
|
||||||
|
|
||||||
|
+CMPDN="$BADBJORNSDN"
|
||||||
|
+echo "Testing list compare (should return FALSE)..."
|
||||||
|
+echo "# Testing list compare... (should return FALSE)" >> $SEARCHOUT
|
||||||
|
+$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
|
||||||
|
+ "cn=Dynamic List of Members,$LISTDN" "member:$CMPDN" \
|
||||||
|
+ >> $SEARCHOUT 2>&1
|
||||||
|
+RC=$?
|
||||||
|
+case $RC in
|
||||||
|
+5)
|
||||||
|
+ echo "ldapcompare returned FALSE ($RC)"
|
||||||
|
+ ;;
|
||||||
|
+6)
|
||||||
|
+ echo "ldapcompare returned TRUE ($RC)!"
|
||||||
|
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||||
|
+ exit $RC
|
||||||
|
+ ;;
|
||||||
|
+0)
|
||||||
|
+ echo "ldapcompare returned success ($RC)!"
|
||||||
|
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||||
|
+ exit -1
|
||||||
|
+ ;;
|
||||||
|
+*)
|
||||||
|
+ echo "ldapcompare failed ($RC)!"
|
||||||
|
+ test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||||
|
+ exit $RC
|
||||||
|
+ ;;
|
||||||
|
+esac
|
||||||
|
+echo "" >> $SEARCHOUT
|
||||||
|
+
|
||||||
|
+
|
||||||
|
CMPDN="$BJORNSDN"
|
||||||
|
echo "Testing list compare (should return FALSE)..."
|
||||||
|
echo "# Testing list compare (should return FALSE)..." >> $SEARCHOUT
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/openldap-2.4.46/tests/scripts/defines.sh b/openldap-2.4.46/tests/scripts/defines.sh
|
||||||
|
index 97cf08f..7d62023 100755
|
||||||
|
--- a/tests/scripts/defines.sh
|
||||||
|
+++ b/tests/scripts/defines.sh
|
||||||
|
@@ -261,6 +261,7 @@ UPDATEDN="cn=Replica,$BASEDN"
|
||||||
|
PASSWD=secret
|
||||||
|
BABSDN="cn=Barbara Jensen,ou=Information Technology DivisioN,ou=People,$BASEDN"
|
||||||
|
BJORNSDN="cn=Bjorn Jensen,ou=Information Technology DivisioN,ou=People,$BASEDN"
|
||||||
|
+BADBJORNSDN="cn=Bjorn JensenNotReally,ou=Information Technology DivisioN,ou=People,$BASEDN"
|
||||||
|
JAJDN="cn=James A Jones 1,ou=Alumni Association,ou=People,$BASEDN"
|
||||||
|
JOHNDDN="cn=John Doe,ou=Information Technology Division,ou=People,$BASEDN"
|
||||||
|
MELLIOTDN="cn=Mark Elliot,ou=Alumni Association,ou=People,$BASEDN"
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/tests/scripts/test044-dynlist b/tests/scripts/test044-dynlist
|
||||||
|
index 4c6390e..8ace1a8 100755
|
||||||
|
--- a/tests/scripts/test044-dynlist
|
||||||
|
+++ b/tests/scripts/test044-dynlist
|
||||||
|
@@ -448,13 +448,13 @@ $LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
|
||||||
|
RC=$?
|
||||||
|
case $RC in
|
||||||
|
5)
|
||||||
|
- echo "ldapcompare returned FALSE ($RC)"
|
||||||
|
- ;;
|
||||||
|
-6)
|
||||||
|
- echo "ldapcompare returned TRUE ($RC)!"
|
||||||
|
+ echo "ldapcompare returned FALSE ($RC)!"
|
||||||
|
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||||
|
exit $RC
|
||||||
|
;;
|
||||||
|
+6)
|
||||||
|
+ echo "ldapcompare returned TRUE ($RC)"
|
||||||
|
+ ;;
|
||||||
|
0)
|
||||||
|
echo "ldapcompare returned success ($RC)!"
|
||||||
|
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
||||||
|
--
|
||||||
|
1.8.3.1
|
||||||
|
|
||||||
@ -1,372 +0,0 @@
|
|||||||
From ce896d538052d20f56f440d1a23fd99da950ed07 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Noel Power <noel.power@suse.com>
|
|
||||||
Date: Wed, 19 Dec 2018 12:34:13 +0000
|
|
||||||
Subject: [PATCH 1/2] Fix segfault in nops when used with membersof overlay
|
|
||||||
|
|
||||||
Allow problematic variables to be defined on heap so modifications
|
|
||||||
to modlist can happen in other overlay modules
|
|
||||||
|
|
||||||
Signed-off-by: Noel Power <noel.power@suse.com>
|
|
||||||
---
|
|
||||||
servers/slapd/overlays/memberof.c | 64 +++++++++++++++++++++++++--------------
|
|
||||||
1 file changed, 41 insertions(+), 23 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/servers/slapd/overlays/memberof.c b/servers/slapd/overlays/memberof.c
|
|
||||||
index 40ad6e2..358d5f9 100644
|
|
||||||
--- a/servers/slapd/overlays/memberof.c
|
|
||||||
+++ b/servers/slapd/overlays/memberof.c
|
|
||||||
@@ -355,10 +355,13 @@ memberof_value_modify(
|
|
||||||
unsigned long opid = op->o_opid;
|
|
||||||
SlapReply rs2 = { REP_RESULT };
|
|
||||||
slap_callback cb = { NULL, slap_null_cb, NULL, NULL };
|
|
||||||
- Modifications mod[ 2 ] = { { { 0 } } }, *ml;
|
|
||||||
- struct berval values[ 4 ], nvalues[ 4 ];
|
|
||||||
+ Modifications *mod[2] = {NULL, NULL};
|
|
||||||
+ Modifications *ml = NULL;
|
|
||||||
int mcnt = 0;
|
|
||||||
|
|
||||||
+ mod[0] = (Modifications*)ch_calloc( sizeof(Modifications), 1 );
|
|
||||||
+ mod[1] = (Modifications*)ch_calloc( sizeof(Modifications), 1 );
|
|
||||||
+
|
|
||||||
op2.o_tag = LDAP_REQ_MODIFY;
|
|
||||||
|
|
||||||
op2.o_req_dn = *ndn;
|
|
||||||
@@ -375,13 +378,17 @@ memberof_value_modify(
|
|
||||||
op2.o_dont_replicate = 1;
|
|
||||||
|
|
||||||
if ( !BER_BVISNULL( &mo->mo_ndn ) ) {
|
|
||||||
- ml = &mod[ mcnt ];
|
|
||||||
+ ml = mod[ mcnt ];
|
|
||||||
ml->sml_numvals = 1;
|
|
||||||
- ml->sml_values = &values[ 0 ];
|
|
||||||
- ml->sml_values[ 0 ] = mo->mo_dn;
|
|
||||||
+ ml->sml_values =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ ber_dupbv(&ml->sml_values[ 0 ], &mo->mo_ndn);
|
|
||||||
BER_BVZERO( &ml->sml_values[ 1 ] );
|
|
||||||
- ml->sml_nvalues = &nvalues[ 0 ];
|
|
||||||
- ml->sml_nvalues[ 0 ] = mo->mo_ndn;
|
|
||||||
+ ml->sml_nvalues =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ ber_dupbv(&ml->sml_nvalues[ 0 ], &mo->mo_ndn);
|
|
||||||
BER_BVZERO( &ml->sml_nvalues[ 1 ] );
|
|
||||||
ml->sml_desc = slap_schema.si_ad_modifiersName;
|
|
||||||
ml->sml_type = ml->sml_desc->ad_cname;
|
|
||||||
@@ -393,11 +400,17 @@ memberof_value_modify(
|
|
||||||
mcnt++;
|
|
||||||
}
|
|
||||||
|
|
||||||
- ml = &mod[ mcnt ];
|
|
||||||
+ ml = mod[ mcnt ];
|
|
||||||
ml->sml_numvals = 1;
|
|
||||||
- ml->sml_values = &values[ 2 ];
|
|
||||||
+ ml->sml_values =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ BER_BVZERO( &ml->sml_values[ 0 ] );
|
|
||||||
BER_BVZERO( &ml->sml_values[ 1 ] );
|
|
||||||
- ml->sml_nvalues = &nvalues[ 2 ];
|
|
||||||
+ ml->sml_nvalues =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ BER_BVZERO( &ml->sml_nvalues[ 0 ] );
|
|
||||||
BER_BVZERO( &ml->sml_nvalues[ 1 ] );
|
|
||||||
ml->sml_desc = ad;
|
|
||||||
ml->sml_type = ml->sml_desc->ad_cname;
|
|
||||||
@@ -412,11 +425,13 @@ memberof_value_modify(
|
|
||||||
assert( !BER_BVISNULL( new_dn ) );
|
|
||||||
assert( !BER_BVISNULL( new_ndn ) );
|
|
||||||
|
|
||||||
- ml = &mod[ mcnt ];
|
|
||||||
+ ml = mod[ mcnt ];
|
|
||||||
ml->sml_op = LDAP_MOD_ADD;
|
|
||||||
|
|
||||||
- ml->sml_values[ 0 ] = *new_dn;
|
|
||||||
- ml->sml_nvalues[ 0 ] = *new_ndn;
|
|
||||||
+ ber_memfree(ml->sml_values[ 0 ].bv_val);
|
|
||||||
+ ber_memfree(ml->sml_nvalues[ 0 ].bv_val);
|
|
||||||
+ ber_dupbv(&ml->sml_values[ 0 ], new_dn);
|
|
||||||
+ ber_dupbv(&ml->sml_nvalues[ 0 ], new_dn);
|
|
||||||
|
|
||||||
oex.oe_key = (void *)&memberof;
|
|
||||||
LDAP_SLIST_INSERT_HEAD(&op2.o_extra, &oex, oe_next);
|
|
||||||
@@ -433,18 +448,18 @@ memberof_value_modify(
|
|
||||||
op->o_log_prefix, buf, 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
- assert( op2.orm_modlist == &mod[ mcnt ] );
|
|
||||||
- assert( mcnt == 0 || op2.orm_modlist->sml_next == &mod[ 0 ] );
|
|
||||||
+ assert( op2.orm_modlist == mod[ mcnt ] );
|
|
||||||
+ assert( mcnt == 0 || op2.orm_modlist->sml_next == mod[ 0 ] );
|
|
||||||
ml = op2.orm_modlist->sml_next;
|
|
||||||
if ( mcnt == 1 ) {
|
|
||||||
- assert( ml == &mod[ 0 ] );
|
|
||||||
+ assert( ml == mod[ 0 ] );
|
|
||||||
ml = ml->sml_next;
|
|
||||||
}
|
|
||||||
if ( ml != NULL ) {
|
|
||||||
slap_mods_free( ml, 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
- mod[ 0 ].sml_next = NULL;
|
|
||||||
+ mod[ 0 ]->sml_next = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( old_ndn != NULL ) {
|
|
||||||
@@ -454,11 +469,13 @@ memberof_value_modify(
|
|
||||||
assert( !BER_BVISNULL( old_dn ) );
|
|
||||||
assert( !BER_BVISNULL( old_ndn ) );
|
|
||||||
|
|
||||||
- ml = &mod[ mcnt ];
|
|
||||||
+ ml = mod[ mcnt ];
|
|
||||||
ml->sml_op = LDAP_MOD_DELETE;
|
|
||||||
-
|
|
||||||
- ml->sml_values[ 0 ] = *old_dn;
|
|
||||||
- ml->sml_nvalues[ 0 ] = *old_ndn;
|
|
||||||
+
|
|
||||||
+ ber_memfree(ml->sml_values[ 0 ].bv_val);
|
|
||||||
+ ber_memfree(ml->sml_nvalues[ 0 ].bv_val);
|
|
||||||
+ ber_dupbv(&ml->sml_values[ 0 ], old_dn);
|
|
||||||
+ ber_dupbv(&ml->sml_nvalues[ 0 ], old_dn);
|
|
||||||
|
|
||||||
oex.oe_key = (void *)&memberof;
|
|
||||||
LDAP_SLIST_INSERT_HEAD(&op2.o_extra, &oex, oe_next);
|
|
||||||
@@ -475,10 +492,10 @@ memberof_value_modify(
|
|
||||||
op->o_log_prefix, buf, 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
- assert( op2.orm_modlist == &mod[ mcnt ] );
|
|
||||||
+ assert( op2.orm_modlist == mod[ mcnt ] );
|
|
||||||
ml = op2.orm_modlist->sml_next;
|
|
||||||
if ( mcnt == 1 ) {
|
|
||||||
- assert( ml == &mod[ 0 ] );
|
|
||||||
+ assert( ml == mod[ 0 ] );
|
|
||||||
ml = ml->sml_next;
|
|
||||||
}
|
|
||||||
if ( ml != NULL ) {
|
|
||||||
@@ -488,6 +505,7 @@ memberof_value_modify(
|
|
||||||
/* restore original opid */
|
|
||||||
op->o_opid = opid;
|
|
||||||
|
|
||||||
+ slap_mods_free( op2.orm_modlist, 1 );
|
|
||||||
/* FIXME: if old_group_ndn doesn't exist, both delete __and__
|
|
||||||
* add will fail; better split in two operations, although
|
|
||||||
* not optimal in terms of performance. At least it would
|
|
||||||
--
|
|
||||||
2.16.4
|
|
||||||
|
|
||||||
|
|
||||||
From 6bd3ce920e750c21cedf4a118027043d37056950 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Noel Power <noel.power@suse.com>
|
|
||||||
Date: Wed, 19 Dec 2018 15:51:37 +0000
|
|
||||||
Subject: [PATCH 2/2] Remove asserts to allow nops to process.
|
|
||||||
|
|
||||||
The asserts present seem to:
|
|
||||||
a) ensure that only additions can happen to the modlist
|
|
||||||
b) that we only delete Modifications that have been added
|
|
||||||
|
|
||||||
These asserts are bound to the assumption that no other overlay
|
|
||||||
will delete Modifications from the modlist and additionally are
|
|
||||||
there to protect illegal deletion of Modifications allocated on
|
|
||||||
the stack. These changes allow Modifications to be deleted via
|
|
||||||
other overlay modules that could be called. Additionally since
|
|
||||||
now the modlist elements are allocated on the heap we can delete
|
|
||||||
them freely now.
|
|
||||||
|
|
||||||
Signed-off-by: Noel Power <noel.power@suse.com>
|
|
||||||
---
|
|
||||||
servers/slapd/overlays/memberof.c | 129 +++++++++++++++++---------------------
|
|
||||||
1 file changed, 57 insertions(+), 72 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/servers/slapd/overlays/memberof.c b/servers/slapd/overlays/memberof.c
|
|
||||||
index 358d5f9..d49f2d3 100644
|
|
||||||
--- a/servers/slapd/overlays/memberof.c
|
|
||||||
+++ b/servers/slapd/overlays/memberof.c
|
|
||||||
@@ -334,6 +334,55 @@ memberof_isGroupOrMember( Operation *op, memberof_cbinfo_t *mci )
|
|
||||||
return LDAP_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static Modifications*
|
|
||||||
+memberof_value_modlist(
|
|
||||||
+ Operation *op2,
|
|
||||||
+ memberof_t *mo,
|
|
||||||
+ AttributeDescription *ad)
|
|
||||||
+{
|
|
||||||
+ Modifications *ml = NULL;
|
|
||||||
+ Modifications *result = NULL;
|
|
||||||
+ if ( !BER_BVISNULL( &mo->mo_ndn ) ) {
|
|
||||||
+ ml = (Modifications*)ch_calloc( sizeof(Modifications), 1 );
|
|
||||||
+ ml->sml_numvals = 1;
|
|
||||||
+ ml->sml_values =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ ber_dupbv(&ml->sml_values[ 0 ], &mo->mo_ndn);
|
|
||||||
+ BER_BVZERO( &ml->sml_values[ 1 ] );
|
|
||||||
+ ml->sml_nvalues =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ ber_dupbv(&ml->sml_nvalues[ 0 ], &mo->mo_ndn);
|
|
||||||
+ BER_BVZERO( &ml->sml_nvalues[ 1 ] );
|
|
||||||
+ ml->sml_desc = slap_schema.si_ad_modifiersName;
|
|
||||||
+ ml->sml_type = ml->sml_desc->ad_cname;
|
|
||||||
+ ml->sml_op = LDAP_MOD_REPLACE;
|
|
||||||
+ ml->sml_flags = SLAP_MOD_INTERNAL;
|
|
||||||
+ ml->sml_next = result;
|
|
||||||
+ result = ml;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ ml = (Modifications*)ch_calloc( sizeof(Modifications), 1 );
|
|
||||||
+ ml->sml_numvals = 1;
|
|
||||||
+ ml->sml_values =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ BER_BVZERO( &ml->sml_values[ 0 ] );
|
|
||||||
+ BER_BVZERO( &ml->sml_values[ 1 ] );
|
|
||||||
+ ml->sml_nvalues =
|
|
||||||
+ (BerVarray)ch_malloc(
|
|
||||||
+ (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
+ BER_BVZERO( &ml->sml_nvalues[ 0 ] );
|
|
||||||
+ BER_BVZERO( &ml->sml_nvalues[ 1 ] );
|
|
||||||
+ ml->sml_desc = ad;
|
|
||||||
+ ml->sml_type = ml->sml_desc->ad_cname;
|
|
||||||
+ ml->sml_flags = SLAP_MOD_INTERNAL;
|
|
||||||
+ ml->sml_next = result;
|
|
||||||
+ result = ml;
|
|
||||||
+ return result;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* response callback that adds memberof values when a group is modified.
|
|
||||||
*/
|
|
||||||
@@ -355,12 +404,7 @@ memberof_value_modify(
|
|
||||||
unsigned long opid = op->o_opid;
|
|
||||||
SlapReply rs2 = { REP_RESULT };
|
|
||||||
slap_callback cb = { NULL, slap_null_cb, NULL, NULL };
|
|
||||||
- Modifications *mod[2] = {NULL, NULL};
|
|
||||||
Modifications *ml = NULL;
|
|
||||||
- int mcnt = 0;
|
|
||||||
-
|
|
||||||
- mod[0] = (Modifications*)ch_calloc( sizeof(Modifications), 1 );
|
|
||||||
- mod[1] = (Modifications*)ch_calloc( sizeof(Modifications), 1 );
|
|
||||||
|
|
||||||
op2.o_tag = LDAP_REQ_MODIFY;
|
|
||||||
|
|
||||||
@@ -377,47 +421,6 @@ memberof_value_modify(
|
|
||||||
op2.orm_no_opattrs = 1;
|
|
||||||
op2.o_dont_replicate = 1;
|
|
||||||
|
|
||||||
- if ( !BER_BVISNULL( &mo->mo_ndn ) ) {
|
|
||||||
- ml = mod[ mcnt ];
|
|
||||||
- ml->sml_numvals = 1;
|
|
||||||
- ml->sml_values =
|
|
||||||
- (BerVarray)ch_malloc(
|
|
||||||
- (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
- ber_dupbv(&ml->sml_values[ 0 ], &mo->mo_ndn);
|
|
||||||
- BER_BVZERO( &ml->sml_values[ 1 ] );
|
|
||||||
- ml->sml_nvalues =
|
|
||||||
- (BerVarray)ch_malloc(
|
|
||||||
- (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
- ber_dupbv(&ml->sml_nvalues[ 0 ], &mo->mo_ndn);
|
|
||||||
- BER_BVZERO( &ml->sml_nvalues[ 1 ] );
|
|
||||||
- ml->sml_desc = slap_schema.si_ad_modifiersName;
|
|
||||||
- ml->sml_type = ml->sml_desc->ad_cname;
|
|
||||||
- ml->sml_op = LDAP_MOD_REPLACE;
|
|
||||||
- ml->sml_flags = SLAP_MOD_INTERNAL;
|
|
||||||
- ml->sml_next = op2.orm_modlist;
|
|
||||||
- op2.orm_modlist = ml;
|
|
||||||
-
|
|
||||||
- mcnt++;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- ml = mod[ mcnt ];
|
|
||||||
- ml->sml_numvals = 1;
|
|
||||||
- ml->sml_values =
|
|
||||||
- (BerVarray)ch_malloc(
|
|
||||||
- (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
- BER_BVZERO( &ml->sml_values[ 0 ] );
|
|
||||||
- BER_BVZERO( &ml->sml_values[ 1 ] );
|
|
||||||
- ml->sml_nvalues =
|
|
||||||
- (BerVarray)ch_malloc(
|
|
||||||
- (ml->sml_numvals + 1) * sizeof( struct berval ));
|
|
||||||
- BER_BVZERO( &ml->sml_nvalues[ 0 ] );
|
|
||||||
- BER_BVZERO( &ml->sml_nvalues[ 1 ] );
|
|
||||||
- ml->sml_desc = ad;
|
|
||||||
- ml->sml_type = ml->sml_desc->ad_cname;
|
|
||||||
- ml->sml_flags = SLAP_MOD_INTERNAL;
|
|
||||||
- ml->sml_next = op2.orm_modlist;
|
|
||||||
- op2.orm_modlist = ml;
|
|
||||||
-
|
|
||||||
if ( new_ndn != NULL ) {
|
|
||||||
BackendInfo *bi = op2.o_bd->bd_info;
|
|
||||||
OpExtra oex;
|
|
||||||
@@ -425,7 +428,9 @@ memberof_value_modify(
|
|
||||||
assert( !BER_BVISNULL( new_dn ) );
|
|
||||||
assert( !BER_BVISNULL( new_ndn ) );
|
|
||||||
|
|
||||||
- ml = mod[ mcnt ];
|
|
||||||
+ ml = memberof_value_modlist(&op2, mo, ad);
|
|
||||||
+ op2.orm_modlist = ml;
|
|
||||||
+
|
|
||||||
ml->sml_op = LDAP_MOD_ADD;
|
|
||||||
|
|
||||||
ber_memfree(ml->sml_values[ 0 ].bv_val);
|
|
||||||
@@ -447,19 +452,7 @@ memberof_value_modify(
|
|
||||||
Debug( LDAP_DEBUG_ANY, "%s: %s\n",
|
|
||||||
op->o_log_prefix, buf, 0 );
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- assert( op2.orm_modlist == mod[ mcnt ] );
|
|
||||||
- assert( mcnt == 0 || op2.orm_modlist->sml_next == mod[ 0 ] );
|
|
||||||
- ml = op2.orm_modlist->sml_next;
|
|
||||||
- if ( mcnt == 1 ) {
|
|
||||||
- assert( ml == mod[ 0 ] );
|
|
||||||
- ml = ml->sml_next;
|
|
||||||
- }
|
|
||||||
- if ( ml != NULL ) {
|
|
||||||
- slap_mods_free( ml, 1 );
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- mod[ 0 ]->sml_next = NULL;
|
|
||||||
+ slap_mods_free( op2.orm_modlist, 1 );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( old_ndn != NULL ) {
|
|
||||||
@@ -469,7 +462,9 @@ memberof_value_modify(
|
|
||||||
assert( !BER_BVISNULL( old_dn ) );
|
|
||||||
assert( !BER_BVISNULL( old_ndn ) );
|
|
||||||
|
|
||||||
- ml = mod[ mcnt ];
|
|
||||||
+ ml = memberof_value_modlist(&op2, mo, ad);
|
|
||||||
+ op2.orm_modlist = ml;
|
|
||||||
+
|
|
||||||
ml->sml_op = LDAP_MOD_DELETE;
|
|
||||||
|
|
||||||
ber_memfree(ml->sml_values[ 0 ].bv_val);
|
|
||||||
@@ -491,21 +486,11 @@ memberof_value_modify(
|
|
||||||
Debug( LDAP_DEBUG_ANY, "%s: %s\n",
|
|
||||||
op->o_log_prefix, buf, 0 );
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- assert( op2.orm_modlist == mod[ mcnt ] );
|
|
||||||
- ml = op2.orm_modlist->sml_next;
|
|
||||||
- if ( mcnt == 1 ) {
|
|
||||||
- assert( ml == mod[ 0 ] );
|
|
||||||
- ml = ml->sml_next;
|
|
||||||
- }
|
|
||||||
- if ( ml != NULL ) {
|
|
||||||
- slap_mods_free( ml, 1 );
|
|
||||||
- }
|
|
||||||
+ slap_mods_free( op2.orm_modlist, 1 );
|
|
||||||
}
|
|
||||||
/* restore original opid */
|
|
||||||
op->o_opid = opid;
|
|
||||||
|
|
||||||
- slap_mods_free( op2.orm_modlist, 1 );
|
|
||||||
/* FIXME: if old_group_ndn doesn't exist, both delete __and__
|
|
||||||
* add will fail; better split in two operations, although
|
|
||||||
* not optimal in terms of performance. At least it would
|
|
||||||
--
|
|
||||||
2.16.4
|
|
||||||
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Name: openldap
|
Name: openldap
|
||||||
Version: 2.4.46
|
Version: 2.4.46
|
||||||
Release: 13
|
Release: 14
|
||||||
Summary: LDAP support libraries
|
Summary: LDAP support libraries
|
||||||
License: OpenLDAP
|
License: OpenLDAP
|
||||||
URL: https://www.openldap.org/
|
URL: https://www.openldap.org/
|
||||||
@ -68,7 +68,7 @@ Patch6035: CVE-2019-13057-2.patch
|
|||||||
Patch6036: CVE-2019-13057-3.patch
|
Patch6036: CVE-2019-13057-3.patch
|
||||||
Patch6037: CVE-2019-13057-4.patch
|
Patch6037: CVE-2019-13057-4.patch
|
||||||
Patch6038: CVE-2019-13565.patch
|
Patch6038: CVE-2019-13565.patch
|
||||||
Patch6039: CVE-2017-17740.patch
|
Patch6039: 0001-openldap-bugfix-make-test.patch
|
||||||
|
|
||||||
BuildRequires: cyrus-sasl-devel openssl-devel krb5-devel unixODBC-devel
|
BuildRequires: cyrus-sasl-devel openssl-devel krb5-devel unixODBC-devel
|
||||||
BuildRequires: glibc-devel libtool libtool-ltdl-devel groff perl-interpreter perl-devel perl-generators perl-ExtUtils-Embed
|
BuildRequires: glibc-devel libtool libtool-ltdl-devel groff perl-interpreter perl-devel perl-generators perl-ExtUtils-Embed
|
||||||
@ -182,6 +182,7 @@ AUTOMAKE=%{_bindir}/true autoreconf -fi
|
|||||||
%patch6036 -p1
|
%patch6036 -p1
|
||||||
%patch6037 -p1
|
%patch6037 -p1
|
||||||
%patch6038 -p1
|
%patch6038 -p1
|
||||||
|
%patch6039 -p1
|
||||||
|
|
||||||
ln -s ../../../contrib/slapd-modules/smbk5pwd/smbk5pwd.c servers/slapd/overlays
|
ln -s ../../../contrib/slapd-modules/smbk5pwd/smbk5pwd.c servers/slapd/overlays
|
||||||
mv contrib/slapd-modules/smbk5pwd/README contrib/slapd-modules/smbk5pwd/README.smbk5pwd
|
mv contrib/slapd-modules/smbk5pwd/README contrib/slapd-modules/smbk5pwd/README.smbk5pwd
|
||||||
@ -407,6 +408,10 @@ fi
|
|||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
%check
|
||||||
|
pushd openldap-%{version}
|
||||||
|
make check
|
||||||
|
popd
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
@ -461,6 +466,12 @@ exit 0
|
|||||||
%doc ltb-project-openldap-ppolicy-check-password-1.1/README.check_pwd
|
%doc ltb-project-openldap-ppolicy-check-password-1.1/README.check_pwd
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Feb 21 2020 songnannan<songnannan2@huawei.com> - 2.4.46-14
|
||||||
|
- Type:bugfix
|
||||||
|
- ID:NA
|
||||||
|
- SUG:NA
|
||||||
|
- DESC:bugfix about make check
|
||||||
|
|
||||||
* Sat Jan 11 2020 zhangrui<zhangrui182@huawei.com> - 2.4.46-13
|
* Sat Jan 11 2020 zhangrui<zhangrui182@huawei.com> - 2.4.46-13
|
||||||
- Type:cves
|
- Type:cves
|
||||||
- ID:CVE-2017-17740
|
- ID:CVE-2017-17740
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user