]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
memdup the packet we're injecting
authorAlan T. DeKok <aland@freeradius.org>
Thu, 25 Jan 2018 22:19:09 +0000 (17:19 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Thu, 25 Jan 2018 22:30:58 +0000 (17:30 -0500)
src/lib/io/network.c
src/lib/io/network.h

index 0a6a4c8fb8ff6fd640b1731fddf1aa92b59089f4..d62014a9c40733a5f83c66edfa1a8776f7cd94d1 100644 (file)
@@ -1332,7 +1332,7 @@ void fr_network_listen_read(fr_network_t *nr, fr_listen_t const *listen)
  *     - <0 on error
  *     - 0 on success
  */
-int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t *packet, size_t packet_len, fr_time_t recv_time)
+int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t const *packet, size_t packet_len, fr_time_t recv_time)
 {
        int rcode;
        fr_network_inject_t my_inject;
@@ -1346,7 +1346,7 @@ int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t *pac
        if (!listen->app_io->inject) return -1;
 
        my_inject.listen = listen;
-       my_inject.packet = packet;
+       my_inject.packet = talloc_memdup(NULL, packet, packet_len);
        my_inject.packet_len = packet_len;
        my_inject.recv_time = recv_time;
 
index d5d1085cc4c32bbf4a2daeda92b0ede637eca74f..dd96a55f8a7cf4c6c69ca0bd870649098a763300 100644 (file)
@@ -42,7 +42,7 @@ int fr_network_socket_add(fr_network_t *nr, fr_listen_t const *io) CC_HINT(nonnu
 int fr_network_directory_add(fr_network_t *nr, fr_listen_t const *listen) CC_HINT(nonnull);
 int fr_network_worker_add(fr_network_t *nr, fr_worker_t *worker) CC_HINT(nonnull);
 void fr_network_listen_read(fr_network_t *nr, fr_listen_t const *listen) CC_HINT(nonnull);
-int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t *packet, size_t packet_len, fr_time_t recv_time);
+int fr_network_listen_inject(fr_network_t *nr, fr_listen_t *listen, uint8_t const *packet, size_t packet_len, fr_time_t recv_time);
 
 #ifdef __cplusplus
 }