From: Kurt Zeilenga Date: Fri, 25 Aug 2006 04:51:46 +0000 (+0000) Subject: Added ldapsearch bad filter pattern check (ITS#4647) X-Git-Tag: OPENLDAP_REL_ENG_2_3_28~33 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=04a2843aaf302426430be6f8ccfc2deaa2bc85d2;p=openldap Added ldapsearch bad filter pattern check (ITS#4647) --- diff --git a/CHANGES b/CHANGES index 63c7959717..73a6a47073 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,7 @@ OpenLDAP 2.3 Change Log OpenLDAP 2.3.28 Engineering + Added ldapsearch bad filter pattern check (ITS#4647) OpenLDAP 2.3.27 Release Fixed libldap dangling pointer issue (previous fix was broken) (ITS#4405) diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c index 513452fd2f..5496fbf1ae 100644 --- a/clients/tools/ldapsearch.c +++ b/clients/tools/ldapsearch.c @@ -611,12 +611,32 @@ main( int argc, char **argv ) } if ( infile != NULL ) { + int percent = 0; + if ( infile[0] == '-' && infile[1] == '\0' ) { fp = stdin; } else if (( fp = fopen( infile, "r" )) == NULL ) { perror( infile ); return EXIT_FAILURE; } + + for( i=0 ; filtpattern[i] ; i++ ) { + if( filtpattern[i] == '%' ) { + if( percent ) { + fprintf( stderr, _("Bad filter pattern \"%s\"\n"), + filtpattern ); + return EXIT_FAILURE; + } + + percent++; + + if( filtpattern[i+1] != 's' ) { + fprintf( stderr, _("Bad filter pattern \"%s\"\n"), + filtpattern ); + return EXIT_FAILURE; + } + } + } } if ( tmpdir == NULL ) {