From: Alan T. DeKok Date: Thu, 25 Jan 2018 22:19:09 +0000 (-0500) Subject: memdup the packet we're injecting X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9ee99d6707898420f2ec0fe7d1a3726ed2001b60;p=thirdparty%2Ffreeradius-server.git memdup the packet we're injecting --- diff --git a/src/lib/io/network.c b/src/lib/io/network.c index 0a6a4c8fb8f..d62014a9c40 100644 --- a/src/lib/io/network.c +++ b/src/lib/io/network.c @@ -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; diff --git a/src/lib/io/network.h b/src/lib/io/network.h index d5d1085cc4c..dd96a55f8a7 100644 --- a/src/lib/io/network.h +++ b/src/lib/io/network.h @@ -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 }