From 04a2843aaf302426430be6f8ccfc2deaa2bc85d2 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Fri, 25 Aug 2006 04:51:46 +0000 Subject: [PATCH] Added ldapsearch bad filter pattern check (ITS#4647) --- CHANGES | 1 + clients/tools/ldapsearch.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) 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 ) { -- 2.39.5