diff --git a/impl/src/layer2/layer2_tx.c b/impl/src/layer2/layer2_tx.c index 2dfe0a9..62ca81f 100644 --- a/impl/src/layer2/layer2_tx.c +++ b/impl/src/layer2/layer2_tx.c @@ -59,13 +59,20 @@ result_t layer2_tx_fill_packet_queue(layer2_tx_t *ctx) // a packet is available -> move it to the queue header.tx_seq_nr = ctx->next_seq_nr; - uint8_t packetbuf[2048]; + uint8_t *packetbuf = malloc(2048); + if(!packetbuf) { + LOG(LVL_ERR, "malloc failed."); + return ERR_NO_MEM; + } + ret = read(ctx->tun_fd, packetbuf, sizeof(packetbuf)); if(ret < 0) { LOG(LVL_ERR, "read: %s", strerror(errno)); + free(packetbuf); return ERR_SYSCALL; } else if(ret == 0) { // no more data + free(packetbuf); break; }