diff --git a/unreliable_medium/medium b/unreliable_medium/medium
new file mode 100755
index 0000000000000000000000000000000000000000..ef825a98cc094357d06551c18425aaa127927acb
Binary files /dev/null and b/unreliable_medium/medium differ
diff --git a/unreliable_medium/receiver b/unreliable_medium/receiver
new file mode 100755
index 0000000000000000000000000000000000000000..8c12cd7acdb5fad92c66714040e3a04e9ff2b58e
Binary files /dev/null and b/unreliable_medium/receiver differ
diff --git a/unreliable_medium/receiving.c b/unreliable_medium/receiving.c
index 2ad26de8a238320d62e5d84c6c76d4d7c5b9f40d..4106ad50d52464fbd63f053172b4f9a29f5be2e8 100644
--- a/unreliable_medium/receiving.c
+++ b/unreliable_medium/receiving.c
@@ -43,6 +43,8 @@ static int receiveMessage(int desc, char *message)
   static int stop = 0;
   int cw_size     = 0;
   int data_size   = 0;
+  char* correct_msg;
+  int i = 0;
 
   char cw[MAX_MSG_CODE];
   memset(cw, '\0', MAX_MSG_CODE*sizeof(char));
@@ -77,9 +79,13 @@ static int receiveMessage(int desc, char *message)
 	  // }
 
     printf("Message avant correction: %s\n", cw);
-    message = error_correction(cw);
-    printf("Message corrigé: %s\n", message);
-    data_size = strlen(message);
+    correct_msg = error_correction(cw);
+    printf("Message corrigé: %s\n", correct_msg);
+    data_size = strlen(correct_msg);
+
+    for (i = 0; i < data_size; i++) {
+      message[i] = correct_msg[i];
+    }
 	  
 	  return(data_size);
 	}
diff --git a/unreliable_medium/sender b/unreliable_medium/sender
new file mode 100755
index 0000000000000000000000000000000000000000..6c52c3010f1f38cc68f678136acddaec1bb18257
Binary files /dev/null and b/unreliable_medium/sender differ
diff --git a/unreliable_medium/test_to.txt b/unreliable_medium/test_to.txt
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..39c5832b96fe12a84814a81ab6ba152073337cc7 100644
--- a/unreliable_medium/test_to.txt
+++ b/unreliable_medium/test_to.txt
@@ -0,0 +1 @@
+0100110010111110
\ No newline at end of file