]> git.sur5r.net Git - openldap/commitdiff
apparently, time_t is unsigned in some systems
authorPierangelo Masarati <ando@openldap.org>
Mon, 12 Mar 2007 21:04:28 +0000 (21:04 +0000)
committerPierangelo Masarati <ando@openldap.org>
Mon, 12 Mar 2007 21:04:28 +0000 (21:04 +0000)
CHANGES
libraries/libldap/result.c

diff --git a/CHANGES b/CHANGES
index 6eea3066fdf16094ea456365628eea08ac1ae053..83ce180bd71c069372b5a6ce9f175994e349475f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -9,6 +9,7 @@ OpenLDAP 2.3.35 Engineering
        Fixed slapd-meta/slapo-rwm filter mapping
        Fixed slapd-sql subtree shortcut (ITS#4856)
        Fixed slapo-refint config message (ITS#4853)
+       Fixed libldap time_t signedness
        Fixed libldap_r tpool reset (ITS#4855)
 
 OpenLDAP 2.3.34 Release (2007/02/16)
index f6f917959a148b8b4f461507beaca108bd97f448..3dea734fa714485561bb657c02978c59b27b5d6c 100644 (file)
@@ -369,13 +369,18 @@ wait4msg(
                }
 
                if ( rc == LDAP_MSG_X_KEEP_LOOKING && tvp != NULL ) {
+                       time_t  delta_time;
+
                        tmp_time = time( NULL );
-                       tv0.tv_sec -= ( tmp_time - start_time );
-                       if ( tv0.tv_sec <= 0 ) {
+                       delta_time = tmp_time - start_time;
+
+                       /* do not assume time_t is signed */
+                       if ( tv0.tv_sec <= delta_time ) {
                                rc = 0; /* timed out */
                                ld->ld_errno = LDAP_TIMEOUT;
                                break;
                        }
+                       tv0.tv_sec -= delta_time;
                        tv.tv_sec = tv0.tv_sec;
 
                        Debug( LDAP_DEBUG_TRACE, "wait4msg ld %p %ld secs to go\n",