diff --git a/daemon/src/main.c b/daemon/src/main.c
index fabb7681b289c5f9544ec82d77450453618c6ef9..8bca43dd217b2e12e0288ad9a3ffa4b7c4648812 100644
--- a/daemon/src/main.c
+++ b/daemon/src/main.c
@@ -86,24 +86,19 @@ int main() {
   sigaction(SIGINT, &signal_action, NULL);
 
   while (1) {
-    measurement_t *measurement = malloc(sizeof(measurement_t));
+    measurement_t measurement;
 
-    if (measurement == NULL) {
-      perror("Failed to allocate memory for measurement message");
-      return EXIT_FAILURE;
-    }
-
-    if (recv_userspace_message(&userspace_receive_handle, measurement) != 0) {
+    if (recv_userspace_message(&userspace_receive_handle, &measurement) != 0) {
       continue;
     }
 
-    printf("Received data from %d: ", measurement->id);
-    print_measurement_data(measurement);
+    printf("Received data from %d: ", measurement.id);
+    print_measurement_data(&measurement);
 
     data_t data = {
         .sender_id = SENDER_ID,
         .count = 1,
-        .measurements = measurement,
+        .measurements = &measurement,
     };
 
     if (send_kernel_message(&kernel_send_handle, &data) == -1) {