1
constraint overlay: fix config emit
3
Author: Pierangelo Masarati <ando@OpenLDAP.org>
5
Upstream commit: c0b669e14f4ef5b649f86bb3c1cc4ca76a00efa8
8
diff --git a/servers/slapd/overlays/constraint.c b/servers/slapd/overlays/constraint.c
9
index fcb2830..e6a9267 100644
10
--- a/servers/slapd/overlays/constraint.c
11
+++ b/servers/slapd/overlays/constraint.c
12
@@ -145,6 +145,8 @@ constraint_cf_gen( ConfigArgs *c )
17
+ char val_buf[SLAP_TEXT_BUFLEN] = { '\0' };
19
bv.bv_len = STRLENOF(" ");
20
for (j = 0; cp->ap[j]; j++) {
21
@@ -156,6 +158,7 @@ constraint_cf_gen( ConfigArgs *c )
29
@@ -164,8 +167,10 @@ constraint_cf_gen( ConfigArgs *c )
31
} else if (cp->size) {
34
} else if (cp->count) {
39
bv.bv_len += strlen(tstr);
40
@@ -175,6 +180,15 @@ constraint_cf_gen( ConfigArgs *c )
41
bv.bv_len += cp->restrict_val.bv_len + STRLENOF(" restrict=\"\"");
44
+ if (cp->count || cp->size) {
45
+ int len = snprintf(val_buf, sizeof(val_buf), "%d", val);
53
s = bv.bv_val = ch_malloc(bv.bv_len + 1);
55
s = lutil_strncopy( s, cp->ap[0]->ad_cname.bv_val, cp->ap[0]->ad_cname.bv_len );
56
@@ -185,9 +199,13 @@ constraint_cf_gen( ConfigArgs *c )
58
s = lutil_strcopy( s, tstr );
60
- if ( quotes ) *s++ = '"';
61
- s = lutil_strncopy( s, cp->val.bv_val, cp->val.bv_len );
62
- if ( quotes ) *s++ = '"';
63
+ if (cp->count || cp->size) {
64
+ s = lutil_strcopy( s, val_buf );
66
+ if ( quotes ) *s++ = '"';
67
+ s = lutil_strncopy( s, cp->val.bv_val, cp->val.bv_len );
68
+ if ( quotes ) *s++ = '"';
70
if (cp->restrict_lud != NULL) {
71
s = lutil_strcopy( s, " restrict=\"" );
72
s = lutil_strncopy( s, cp->restrict_val.bv_val, cp->restrict_val.bv_len );
73
@@ -471,7 +489,7 @@ constraint_cf_gen( ConfigArgs *c )
77
- ber_str2bv(c->argv[argidx], 0, 1, &ap.restrict_val);
78
+ ber_str2bv(c->argv[argidx] + STRLENOF("restrict="), 0, 1, &ap.restrict_val);