]> git.sur5r.net Git - openldap/commitdiff
ITS#8103 fix crash with more than 65535 aliases in a scope
authorHoward Chu <hyc@openldap.org>
Mon, 13 Apr 2015 20:11:29 +0000 (13:11 -0700)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 17 Apr 2015 01:27:56 +0000 (20:27 -0500)
servers/slapd/back-mdb/dn2id.c

index 45f95225e1a9d455da62356b4c9fe85b28cd057a..d1845f710910f9ddd6c3305365076cfb68febe96 100644 (file)
@@ -664,6 +664,11 @@ mdb_idscope(
                        ptr += data.mv_size - sizeof(ID);
                        memcpy( &id, ptr, sizeof(ID) );
                        if ( id == base ) {
+                               if ( res[0] >= MDB_IDL_DB_SIZE-1 ) {
+                                       /* too many aliases in scope. Fallback to range */
+                                       MDB_IDL_RANGE( res, MDB_IDL_FIRST( ids ), MDB_IDL_LAST( ids ));
+                                       goto leave;
+                               }
                                res[0]++;
                                res[res[0]] = ida;
                                copy = 0;
@@ -685,6 +690,7 @@ mdb_idscope(
        if (!MDB_IDL_IS_RANGE( ids ))
                ids[0] = idc;
 
+leave:
        mdb_cursor_close( cursor );
        return rc;
 }