]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
control: ring-buffer leak and ssize_t/size_t mismatch in fr_control_message_pop error...
authorAlexander Bainbridge-Sedivy <alex.bainbridge@inkbridge.io>
Wed, 3 Jun 2026 20:25:07 +0000 (16:25 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 8 Jun 2026 09:14:33 +0000 (12:14 +0300)
src/lib/io/control.c

index c133ceaca5bce535f3de3800c578b6d6b51bba5f..eb7aab6404f346abccded8713e260de8d4900742 100644 (file)
@@ -96,7 +96,7 @@ static void pipe_read(UNUSED fr_event_list_t *el, int fd, UNUSED int flags, void
        fr_time_t now;
        char read_buffer[256];
        uint8_t data[256];
-       size_t message_size;
+       ssize_t message_size;
        uint32_t id = 0;
 
        /*
@@ -417,6 +417,7 @@ ssize_t fr_control_message_pop(fr_atomic_queue_t *aq, uint32_t *p_id, void *data
         */
        if (data_size < m->data_size) {
                fr_strerror_printf("Allocation size should be at least %zd", m->data_size);
+               m->status = FR_CONTROL_MESSAGE_DONE;
                return -(m->data_size);
        }