]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Better errors checks in event.c
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sat, 26 Nov 2016 01:14:12 +0000 (20:14 -0500)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Sat, 26 Nov 2016 15:23:30 +0000 (10:23 -0500)
src/lib/event.c

index bbb3d5e7fc35a612e621e54e9926e8dd00b59644..ae04079789cf1fa412816ecdcc1014b44ad8eb06 100644 (file)
@@ -333,7 +333,20 @@ int fr_event_timer_delete(fr_event_list_t *el, fr_event_timer_t **parent)
 
        fr_event_timer_t *ev;
 
-       if (!el || !parent || !*parent) return -1;
+       if (!el) {
+               fr_strerror_printf("Invalid argument: NULL event list");
+               return -1;
+       }
+
+       if (!parent) {
+               fr_strerror_printf("Invalid arguments: NULL event pointer");
+               return -1;
+       }
+
+       if (!*parent) {
+               fr_strerror_printf("Invalid arguments: NULL event");
+               return -1;
+       }
 
 #ifndef NDEBUG
        /*
@@ -352,7 +365,15 @@ int fr_event_timer_delete(fr_event_list_t *el, fr_event_timer_t **parent)
        *parent = NULL;
 
        ret = fr_heap_extract(el->times, ev);
-       (void)fr_cond_assert(ret == 1); /* events MUST be in the heap */
+
+       /*
+        *      Events MUST be in the heap
+        */
+       if (!fr_cond_assert(ret == 1)) {
+               fr_strerror_printf("Event not found in heap");
+               talloc_free(ev);
+               return -1;
+       }
        talloc_free(ev);
 
        return ret;