[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
ldap_search_ext parameter checking problem (ITS#399)
Full_Name: Steven F. Sonntag
Version: development
OS: WinNT
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (137.65.214.133)
libraries/libldap/search.c v1.31
ldap_search_ext does not check parameters correctly
I changed it to do the following:
Return LDAP_PARAM_ERROR when tv_sec and tv_usec are both zero
Use timeout of 1 second when tv_sec==0 and tv_usec!=0
Diff -u follows:
--- ldap/libraries/libldap/search.c Wed Sep 08 18:06:30 1999
+++ search.c Tue Dec 14 23:45:55 1999
@@ -98,12 +98,23 @@
Debug( LDAP_DEBUG_TRACE, "ldap_search_ext\n", 0, 0, 0 );
/*
* if timeout is provided, use only tv_sec as timelimit.
+ * if both timevals are zero return LDAP_PARAM_ERROR.
+ * if only tv_usec is provided, use value of 1 second.
- * otherwise, use default.
*/
- timelimit = (timeout != NULL)
- ? timeout->tv_sec
- : -1;
+
+ if( timeout == NULL ) {
+ timelimit = -1; /* infinite */
+ } else {
+ if( (timeout->tv_sec == 0) && (timeout->tv_usec == 0)) {
+ return LDAP_PARAM_ERROR;
+ }
+ if( timeout->tv_sec == 0) {
+ timelimit = 1;
+ } else {
+ timelimit = timeout->tv_sec;
+ }
+ }
ber = ldap_build_search_req( ld, base, scope, filter, attrs,
attrsonly, sctrls, cctrls, timelimit, sizelimit );