]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Passing a NULL pointer to fr_timer_disarm is a noop
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 28 Mar 2025 05:45:29 +0000 (23:45 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 28 Mar 2025 18:25:11 +0000 (12:25 -0600)
src/lib/util/timer.c
src/lib/util/timer.h

index 66f6983c5b5c920dd13da816e34ea312356f725f..419cdfbdc3b578358a26a5c090748f58700dbf48 100644 (file)
@@ -605,13 +605,15 @@ static int timer_ordered_disarm(fr_timer_t *ev)
  */
 int fr_timer_disarm(fr_timer_t *ev)
 {
-       fr_timer_list_t *tl = ev->tl;
+       fr_timer_list_t *tl;
 
-       if (!EVENT_ARMED(ev)) {
+       if (!ev || !EVENT_ARMED(ev)) {
                EVENT_DEBUG("Asked to disarm inactive timer %p (noop)", ev);
                return 0; /* Noop */
        }
 
+       tl = ev->tl;
+
        EVENT_DEBUG("Disarming timer %p", ev);
 
        CHECK_PARENT(ev);
index 9fd7a63c663a29bc26de45a09fa8ceac916fddb8..778c24dbc4bc95dd98f068e4d2988ef589393009 100644 (file)
@@ -85,7 +85,7 @@ int                   _fr_timer_in(NDEBUG_LOCATION_ARGS
                                     CC_HINT(nonnull(NDEBUG_LOCATION_NONNULL(2), NDEBUG_LOCATION_NONNULL(3), NDEBUG_LOCATION_NONNULL(6)));
 #define                        fr_timer_in(...) _fr_timer_in(NDEBUG_LOCATION_EXP __VA_ARGS__)
 
-int                    fr_timer_disarm(fr_timer_t *ev) CC_HINT(nonnull);       /* disarms but does not free */
+int                    fr_timer_disarm(fr_timer_t *ev);                        /* disarms but does not free */
 
 int                    fr_timer_delete(fr_timer_t **ev_p) CC_HINT(nonnull);    /* disarms AND frees */