diff --git a/CHANGES b/CHANGES
index 22c7e46f22de9e69d36b54bf1eb30c30c3919e1e..75a33a21751419c906d7755131b8e207dbbbbcb6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,7 @@
 OpenLDAP 2.4 Change Log
 
 OpenLDAP 2.4.25 Engineering
+	Fixed ldapsearch pagedresults loop (ITS#6755)
 	Fixed tools for incompatible args (ITS#6849)
 	Fixed slapd add objectclasses in order (ITS#6837)
 	Added slapd ordering for uidNumber and gidNumber (ITS#6852)
diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c
index 4e4f893b8f2632cc210ef4858a213d517fb68f03..1689f61c1582377300a08f54cfdd8811228c6005 100644
--- a/clients/tools/ldapsearch.c
+++ b/clients/tools/ldapsearch.c
@@ -908,6 +908,15 @@ main( int argc, char **argv )
 	tool_bind( ld );
 
 getNextPage:
+	/* fp may have been closed, need to reopen if code jumps
+	 * back here to getNextPage.
+	 */
+	if ( !fp && infile ) {
+		if (( fp = fopen( infile, "r" )) == NULL ) {
+			perror( infile );
+			return EXIT_FAILURE;
+		}
+	}
 	save_nctrls = nctrls;
 	i = nctrls;
 	if ( nctrls > 0
@@ -1249,6 +1258,7 @@ getNextPage:
 		}
 		if ( fp != stdin ) {
 			fclose( fp );
+			fp = NULL;
 		}
 	}