Commit ab3c1944 authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#6057

parent 67ac3586
......@@ -10,6 +10,7 @@ OpenLDAP 2.4.17 Engineering
Fixed slapd normalization of updated schema attributes (ITS#5540)
Fixed slapd pagedresults stacked control with overlays (ITS#6056)
Fixed slapd sockets usage on windows (ITS#6039)
Added slapo-rwm rwm-drop-unrequested-attrs config option (ITS#6057)
Build Environment
Added test056-monitor (ITS#5540)
Added test057-memberof-refint (ITS#5395)
......
......@@ -89,6 +89,19 @@ Set this to "yes", if the
overlay should try to normalize the values of attributes that are mapped from
an attribute type that is unknown to the local server. The default value of
this setting is "no".
.TP
.B rwm-drop-unrequested-attrs {yes|no}
Set this to "yes", if the
.B rwm
overlay should drop attributes that are not explicitly requested
by a search operation.
When this is set to "no", the
.B rwm
overlay will leave all attributes in place, so that subsequent modules
can further manipulate them.
In any case, unrequested attributes will be omitted from search results
by the frontend, when the search entry response package is encoded.
The default value of this setting is "yes".
.SH SUFFIX MASSAGING
A basic feature of the
.B rwm
......
......@@ -1197,7 +1197,8 @@ rwm_attrs( Operation *op, SlapReply *rs, Attribute** a_first, int stripEntryDN )
int last = -1;
Attribute *a;
if ( op->ors_attrs != NULL &&
if ( ( rwmap->rwm_flags & RWM_F_DROP_UNREQUESTED_ATTRS ) &&
op->ors_attrs != NULL &&
!SLAP_USERATTRS( rs->sr_attr_flags ) &&
!ad_inlist( (*ap)->a_desc, op->ors_attrs ) )
{
......@@ -1829,6 +1830,7 @@ enum {
RWM_CF_MAP,
RWM_CF_T_F_SUPPORT,
RWM_CF_NORMALIZE_MAPPED,
RWM_CF_DROP_UNREQUESTED,
RWM_CF_LAST
};
......@@ -1883,6 +1885,14 @@ static ConfigTable rwmcfg[] = {
"SINGLE-VALUE )",
NULL, NULL },
{ "rwm-drop-unrequested-attrs", "true|false",
2, 2, 0, ARG_MAGIC|ARG_ON_OFF|RWM_CF_DROP_UNREQUESTED, rwm_cf_gen,
"( OLcfgOvAt:16.5 NAME 'olcRwmDropUnrequested' "
"DESC 'Drop unrequested attributes' "
"SYNTAX OMsBoolean "
"SINGLE-VALUE )",
NULL, NULL },
{ NULL, NULL, 0, 0, 0, ARG_IGNORED }
};
......@@ -2051,6 +2061,10 @@ rwm_cf_gen( ConfigArgs *c )
c->value_int = ( rwmap->rwm_flags & RWM_F_NORMALIZE_MAPPED_ATTRS );
break;
case RWM_CF_DROP_UNREQUESTED:
c->value_int = ( rwmap->rwm_flags & RWM_F_DROP_UNREQUESTED_ATTRS );
break;
default:
assert( 0 );
rc = 1;
......@@ -2145,6 +2159,10 @@ rwm_cf_gen( ConfigArgs *c )
rwmap->rwm_flags &= ~RWM_F_NORMALIZE_MAPPED_ATTRS;
break;
case RWM_CF_DROP_UNREQUESTED:
rwmap->rwm_flags &= ~RWM_F_DROP_UNREQUESTED_ATTRS;
break;
default:
return 1;
}
......@@ -2325,6 +2343,14 @@ rwm_cf_gen( ConfigArgs *c )
}
break;
case RWM_CF_DROP_UNREQUESTED:
if ( c->value_int ) {
rwmap->rwm_flags |= RWM_F_DROP_UNREQUESTED_ATTRS;
} else {
rwmap->rwm_flags &= ~RWM_F_DROP_UNREQUESTED_ATTRS;
}
break;
default:
assert( 0 );
return 1;
......@@ -2344,9 +2370,11 @@ rwm_db_init(
rwmap = (struct ldaprwmap *)ch_calloc( 1, sizeof( struct ldaprwmap ) );
/* default */
rwmap->rwm_flags = RWM_F_DROP_UNREQUESTED_ATTRS;
rc = rwm_info_init( &rwmap->rwm_rw );
error_return:;
on->on_bi.bi_private = (void *)rwmap;
if ( rc ) {
......
......@@ -81,6 +81,7 @@ struct ldaprwmap {
#define RWM_F_NONE (0x0000U)
#define RWM_F_NORMALIZE_MAPPED_ATTRS (0x0001U)
#define RWM_F_DROP_UNREQUESTED_ATTRS (0x0002U)
#define RWM_F_SUPPORT_T_F (0x4000U)
#define RWM_F_SUPPORT_T_F_DISCOVER (0x8000U)
#define RWM_F_SUPPORT_T_F_MASK (RWM_F_SUPPORT_T_F)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment