Code

src/liboping.c: Fix a (too conservative) off-by-one error in ping_iterator_get_info()
[liboping.git] / src / liboping.c
index c93633c8ea7c6cfba58336f394a4d4c9b1c7019e..6ffb482c919b430aec964c909d8dfb53103370ff 100644 (file)
@@ -162,7 +162,6 @@ static int ping_timeval_add (struct timeval *tv1, struct timeval *tv2,
 static int ping_timeval_sub (struct timeval *tv1, struct timeval *tv2,
                struct timeval *res)
 {
-
        if ((tv1->tv_sec < tv2->tv_sec)
                        || ((tv1->tv_sec == tv2->tv_sec)
                                && (tv1->tv_usec < tv2->tv_usec)))
@@ -171,7 +170,7 @@ static int ping_timeval_sub (struct timeval *tv1, struct timeval *tv2,
        res->tv_sec  = tv1->tv_sec  - tv2->tv_sec;
        res->tv_usec = tv1->tv_usec - tv2->tv_usec;
 
-       assert ((res->tv_sec > 0) || ((res->tv_sec == 0) && (res->tv_usec > 0)));
+       assert ((res->tv_sec > 0) || ((res->tv_sec == 0) && (res->tv_usec >= 0)));
 
        while (res->tv_usec < 0)
        {
@@ -1293,7 +1292,7 @@ int ping_iterator_get_info (pingobj_iter_t *iter, int info,
                case PING_INFO_HOSTNAME:
                        ret = ENOMEM;
                        *buffer_len = strlen (iter->hostname) + 1;
-                       if (orig_buffer_len <= *buffer_len)
+                       if (orig_buffer_len < *buffer_len)
                                break;
                        /* Since (orig_buffer_len > *buffer_len) `strncpy'
                         * will copy `*buffer_len' and pad the rest of