Hello community,

here is the log from the commit of package openldap2 for openSUSE:Factory 
checked in at 2017-09-25 13:53:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openldap2 (Old)
 and      /work/SRC/openSUSE:Factory/.openldap2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openldap2"

Mon Sep 25 13:53:42 2017 rev:126 rq:527556 version:unknown

Changes:
--------
--- /work/SRC/openSUSE:Factory/openldap2/openldap2.changes      2017-09-09 
20:22:29.692256401 +0200
+++ /work/SRC/openSUSE:Factory/.openldap2.new/openldap2.changes 2017-09-25 
13:53:43.538875234 +0200
@@ -1,0 +2,5 @@
+Mon Sep 18 20:45:58 UTC 2017 - [email protected]
+
+- added 0012-ITS8051-sockdnpat.patch
+
+-------------------------------------------------------------------

New:
----
  0012-ITS8051-sockdnpat.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openldap2.spec ++++++
--- /var/tmp/diff_new_pack.6FN3sU/_old  2017-09-25 13:53:44.658717675 +0200
+++ /var/tmp/diff_new_pack.6FN3sU/_new  2017-09-25 13:53:44.662717112 +0200
@@ -57,6 +57,7 @@
 Patch8:         0008-In-monitor-backend-do-not-return-Connection0-entries.patch
 Patch9:         0009-Fix-ldap-host-lookup-ipv6.patch
 Patch11:        0011-openldap-re24-its7796.patch
+Patch12:        0012-ITS8051-sockdnpat.patch
 Patch13:        0013-ITS-8692-let-back-sock-generate-increment-line.patch
 Patch14:        
0014-ITS-8714-Send-out-EXTENDED-operation-message-from-back-sock.patch
 Source200:      
%{name_ppolicy_check_module}-%{version_ppolicy_check_module}.tar.gz
@@ -251,6 +252,7 @@
 %patch8 -p1
 %patch9 -p1
 %patch11 -p1
+%patch12 -p1
 %patch13 -p1
 %patch14 -p1
 cp %{SOURCE5} .

++++++ 0012-ITS8051-sockdnpat.patch ++++++
>From 328612d3370290c7f42ad835e1b0e3189eadef7b Mon Sep 17 00:00:00 2001
From: Howard Chu <[email protected]>
Date: Wed, 4 Feb 2015 03:53:13 +0000
Subject: [PATCH] ITS#8051 add DN qualifier

---
 doc/man/man5/slapd-sock.5           |  5 +++++
 servers/slapd/back-sock/back-sock.h |  2 ++
 servers/slapd/back-sock/config.c    | 32 +++++++++++++++++++++++++++++---
 3 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/doc/man/man5/slapd-sock.5 b/doc/man/man5/slapd-sock.5
index ee8cc919f..1ac4f7fdd 100644
--- a/doc/man/man5/slapd-sock.5
+++ b/doc/man/man5/slapd-sock.5
@@ -58,6 +58,11 @@ Specify which response types to send to the external 
program. "result"
 sends just the results of an operation. "search" sends all entries that
 the database returned for a search request. The default is empty
 (no responses are sent).
+.TP
+.B sockdnpat   <regexp>
+Specify DN patterns for which the overlay will act. Only operations on
+DNs matching the specified regular expression will be processed. The default
+is empty (all DNs are processed).
 
 .SH PROTOCOL
 The protocol is essentially the same as
diff --git a/servers/slapd/back-sock/back-sock.h 
b/servers/slapd/back-sock/back-sock.h
index 15495a6bc..7a083a8df 100644
--- a/servers/slapd/back-sock/back-sock.h
+++ b/servers/slapd/back-sock/back-sock.h
@@ -30,6 +30,8 @@ struct sockinfo {
        slap_mask_t     si_extensions;
        slap_mask_t     si_ops;         /* overlay: operations to act on */
        slap_mask_t     si_resps;       /* overlay: responses to forward */
+       regex_t si_dnpat;               /* overlay: DN pattern to match */
+       struct berval   si_dnpatstr;
 };
 
 #define        SOCK_EXT_BINDDN 1
diff --git a/servers/slapd/back-sock/config.c b/servers/slapd/back-sock/config.c
index d8ff95ceb..dc3f1365c 100644
--- a/servers/slapd/back-sock/config.c
+++ b/servers/slapd/back-sock/config.c
@@ -36,11 +36,12 @@ static slap_response sock_over_response;
 enum {
        BS_EXT = 1,
        BS_OPS,
-       BS_RESP
+       BS_RESP,
+       BS_DNPAT
 };
 
 /* The number of overlay-only config attrs */
-#define NUM_OV_ATTRS   2
+#define NUM_OV_ATTRS   3
 
 static ConfigTable bscfg[] = {
        { "sockops", "ops", 2, 0, 0, ARG_MAGIC|BS_OPS,
@@ -53,6 +54,11 @@ static ConfigTable bscfg[] = {
                        "DESC 'Response types to forward' "
                        "EQUALITY caseIgnoreMatch "
                        "SYNTAX OMsDirectoryString )", NULL, NULL },
+       { "sockdnpat", "regexp", 2, 2, 0, ARG_MAGIC|BS_DNPAT,
+               bs_cf_gen, "( OLcfgDbAt:7.5 NAME 'olcOvSocketDNpat' "
+                       "DESC 'DN pattern to match' "
+                       "EQUALITY caseIgnoreMatch "
+                       "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL 
},
 
        { "socketpath", "pathname", 2, 2, 0, ARG_STRING|ARG_OFFSET,
                (void *)offsetof(struct sockinfo, si_sockpath),
@@ -86,7 +92,8 @@ static ConfigOCs osocs[] = {
                "SUP olcOverlayConfig "
                "MUST olcDbSocketPath "
                "MAY ( olcDbSocketExtensions $ "
-                       " olcOvSocketOps $ olcOvSocketResps ) )",
+                       " olcOvSocketOps $ olcOvSocketResps $ "
+                       " olcOvSocketDNpat ) )",
                        Cft_Overlay, bscfg },
        { NULL, 0, NULL }
 };
@@ -150,6 +157,9 @@ bs_cf_gen( ConfigArgs *c )
                        return mask_to_verbs( ov_ops, si->si_ops, 
&c->rvalue_vals );
                case BS_RESP:
                        return mask_to_verbs( ov_resps, si->si_resps, 
&c->rvalue_vals );
+               case BS_DNPAT:
+                       value_add_one( &c->rvalue_vals, &si->si_dnpatstr );
+                       return 0;
                }
        } else if ( c->op == LDAP_MOD_DELETE ) {
                switch( c->type ) {
@@ -186,6 +196,11 @@ bs_cf_gen( ConfigArgs *c )
                                        si->si_resps ^= dels;
                        }
                        return rc;
+               case BS_DNPAT:
+                       regfree( &si->si_dnpat );
+                       ch_free( si->si_dnpatstr.bv_val );
+                       BER_BVZERO( &si->si_dnpatstr );
+                       return 0;
                }
 
        } else {
@@ -196,6 +211,13 @@ bs_cf_gen( ConfigArgs *c )
                        return verbs_to_mask( c->argc, c->argv, ov_ops, 
&si->si_ops );
                case BS_RESP:
                        return verbs_to_mask( c->argc, c->argv, ov_resps, 
&si->si_resps );
+               case BS_DNPAT:
+                       if ( !regcomp( &si->si_dnpat, c->argv[1], 
REG_EXTENDED|REG_ICASE|REG_NOSUB )) {
+                               ber_str2bv( c->argv[1], 0, 1, &si->si_dnpatstr 
);
+                               return 0;
+                       } else {
+                               return 1;
+                       }
                }
        }
        return 1;
@@ -268,6 +290,10 @@ static int sock_over_op(
        if ( !(si->si_ops & sockopflags[which]))
                return SLAP_CB_CONTINUE;
 
+       if ( !BER_BVISEMPTY( &si->si_dnpatstr ) &&
+               regexec( &si->si_dnpat, op->o_req_ndn.bv_val, 0, NULL, 0 ))
+               return SLAP_CB_CONTINUE;
+
        op->o_bd->be_private = si;
        sc = op->o_callback;
        op->o_callback = NULL;

Reply via email to