Sync with HEAD

Fix LDAP IMR tags
This commit is contained in:
Kurt Zeilenga 2004-10-20 22:06:50 +00:00
parent 9f5e9f7fd2
commit b32d83ad66
4 changed files with 15 additions and 3 deletions

View File

@ -3,6 +3,7 @@ OpenLDAP 2.2 Change Log
OpenLDAP 2.2.18 Release
Fixed libldap schema keyword sensitivity (ITS#3334)
Fixed libldap DN filter sensitivity (ITS#3334)
Fixed libldap intermediate response tags
Fixed slapd matching rule name sensitivity (ITS#3334)
Fixed slapd multiple value delete (ITS#3346)
Fixed slapd referral memory leak

View File

@ -52,10 +52,12 @@ Implement authPassword (RFC 3112)
Add LDIFv2 (XML) support to command line tools
Implement LDAPprep and SASLprep
Implement additional matching rules (RFC 3698)
Add syncrepl "turn" support
Add dumpasn1 logging support
Add tests to test suite
Convert utfconv.txt into man page(s).
Add jail(2) support
Recode linked-list structs to use <ldap_queue.h> macros
Convert utfconv.txt into man page(s).
Update any manual page

View File

@ -319,6 +319,9 @@ typedef struct ldapcontrol {
#define LDAP_TAG_EXOP_RES_OID ((ber_tag_t) 0x8aU) /* context specific + primitive */
#define LDAP_TAG_EXOP_RES_VALUE ((ber_tag_t) 0x8bU) /* context specific + primitive */
#define LDAP_TAG_IM_RES_OID ((ber_tag_t) 0x80U) /* context specific + primitive */
#define LDAP_TAG_IM_RES_VALUE ((ber_tag_t) 0x81U) /* context specific + primitive */
#define LDAP_TAG_SASL_RES_CREDS ((ber_tag_t) 0x87U) /* context specific + primitive */
/* LDAP Request Messages */

View File

@ -353,7 +353,13 @@ ldap_parse_intermediate (
tag = ber_peek_tag( ber, &len );
if( tag == LDAP_TAG_EXOP_RES_OID ) {
/*
* NOTE: accept intermediate and extended response tag values
* as older versions of slapd(8) incorrectly used extended
* response tags.
* Should be removed when 2.2 is moved to Historic.
*/
if( tag == LDAP_TAG_IM_RES_OID || tag == LDAP_TAG_EXOP_RES_OID ) {
/* we have a resoid */
if( ber_scanf( ber, "a", &resoid ) == LBER_ERROR ) {
ld->ld_errno = LDAP_DECODING_ERROR;
@ -364,7 +370,7 @@ ldap_parse_intermediate (
tag = ber_peek_tag( ber, &len );
}
if( tag == LDAP_TAG_EXOP_RES_VALUE ) {
if( tag == LDAP_TAG_IM_RES_VALUE || tag == LDAP_TAG_EXOP_RES_VALUE ) {
/* we have a resdata */
if( ber_scanf( ber, "O", &resdata ) == LBER_ERROR ) {
ld->ld_errno = LDAP_DECODING_ERROR;