X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fstr2filter.c;h=0c593f69b87dc0ad8031e4b2566655aae39fa4df;hb=2ae35da6bbea2f7dd843dc2710940afafbbb1fe7;hp=310c3a56c90db9d92fbccaaea558c5118d3c6c21;hpb=5d0ba372e56dcab4298c16d9ca8273e6fd3973ba;p=openldap diff --git a/servers/slapd/str2filter.c b/servers/slapd/str2filter.c index 310c3a56c9..0c593f69b8 100644 --- a/servers/slapd/str2filter.c +++ b/servers/slapd/str2filter.c @@ -1,8 +1,27 @@ -/* str2filter.c - parse an rfc 1588 string filter */ +/* str2filter.c - parse an RFC 4515 string filter */ /* $OpenLDAP$ */ -/* - * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2009 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* Portions Copyright (c) 1995 Regents of the University of Michigan. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of Michigan at Ann Arbor. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. */ #include "portable.h" @@ -14,29 +33,18 @@ #include #include "slap.h" -#include -#if 0 /* unused */ -static char *find_matching_paren( const char *s ); -#endif /* unused */ -static Filter *str2list( const char *str, long unsigned int ftype); -static Filter *str2simple( const char *str); -static int str2subvals( const char *val, Filter *f); Filter * str2filter_x( Operation *op, const char *str ) { int rc; Filter *f = NULL; - char berbuf[LBER_ELEMENT_SIZEOF]; - BerElement *ber = (BerElement *)berbuf; + BerElementBuffer berbuf; + BerElement *ber = (BerElement *)&berbuf; const char *text = NULL; -#ifdef NEW_LOGGING - LDAP_LOG( FILTER, ENTRY, "str2filter: \"%s\"\n", str, 0, 0 ); -#else Debug( LDAP_DEBUG_FILTER, "str2filter \"%s\"\n", str, 0, 0 ); -#endif if ( str == NULL || *str == '\0' ) { return NULL; @@ -66,7 +74,9 @@ Filter * str2filter( const char *str ) { Operation op = {0}; + Opheader ohdr = {0}; + op.o_hdr = &ohdr; op.o_tmpmemctx = NULL; op.o_tmpmfuncs = &ch_mfuncs;