]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/pcache.c
more for #6397
[openldap] / servers / slapd / overlays / pcache.c
index b0f2763ce5975e4afeed0b22cf73256f0f22a195..351d68a84afe6eb5a80843f1a475e4e9d6459699 100644 (file)
@@ -768,6 +768,10 @@ url2query(
                }
                query.scope = lud->lud_scope;
                query.filter = str2filter( lud->lud_filter );
+               if ( query.filter == NULL ) {
+                       rc = -1;
+                       goto error;
+               }
 
                tempstr.bv_val = ch_malloc( strlen( lud->lud_filter ) + 1 );
                tempstr.bv_len = 0;
@@ -2474,8 +2478,9 @@ pcache_response(
                        } else if ( rs->sr_err == LDAP_SIZELIMIT_EXCEEDED
                                && si->qtemp->limitttl )
                        {
-                               si->caching_reason = PC_SIZELIMIT;
                                Entry *e;
+
+                               si->caching_reason = PC_SIZELIMIT;
                                for (;si->head; si->head=e) {
                                        e = si->head->e_private;
                                        si->head->e_private = NULL;
@@ -2639,7 +2644,14 @@ pc_bind_attrs( Operation *op, Entry *e, QueryTemplate *temp,
        }
        *p2 = '\0';
        op->o_tmpfree( vals, op->o_tmpmemctx );
-       return str2filter_x( op, fbv->bv_val );
+
+       /* FIXME: are we sure str2filter_x can't fail?
+        * caller needs to check */
+       {
+               Filter *f = str2filter_x( op, fbv->bv_val );
+               assert( f != NULL );
+               return f;
+       }
 }
 
 /* Check if the requested entry is from the cache and has a valid