diff --git a/hashmap.c b/hashmap.c
index 11a8ca8d055dac3178d71bbc36ef3019634d99c7..e72342ef0a785b9008380692a37a67e913000786 100644
--- a/hashmap.c
+++ b/hashmap.c
@@ -140,7 +140,9 @@ char *hm_rm(hm_t *hm, const char *const key) {
         entry_before->next = entry_before->next->next;
     }
 
-    char *value = entry->value;
+    char *value = strdup(entry->value);
+    free(entry->key);
+    free(entry->value);
     free(entry);
     return value;
 }
diff --git a/main.c b/main.c
index a9d3093c89fe14b001dddf79bb59e8b5b8a167eb..13c3b34d37f4af8817dbcabe6217cfaca9e2af52 100644
--- a/main.c
+++ b/main.c
@@ -47,7 +47,8 @@ int main() {
             scanf("%s", key);
             clear_buffer();
 
-            hm_rm(hm, key);
+            char *c = hm_rm(hm, key);
+            free(c);
         } else if (action == 4) {
             printf("Phone Number: ");
             scanf("%s", key);