diff --git a/src/main.c b/src/main.c
index 182f58a40d34a12a456b1cd36d33a3526ed8445a..ed1a51fc62f6265436833528db7b9ab457955c20 100644
--- a/src/main.c
+++ b/src/main.c
@@ -45,7 +45,7 @@ int main(int argc, char **argv) {
       epsilon = 1e-16;
     }
   } else {
-    compression = "low";
+    compression = strncpy(compression, "low", 3); CHKPTRQ(compression);
   }
   printf("[minisolver] compression = %s\n", compression);
   printf("[minisolver] epsilon = %.0e\n", epsilon);
@@ -80,10 +80,12 @@ int main(int argc, char **argv) {
     MpfFree(rhs);
     rhs = NULL;
   }
+  free(compression);
   printf("done\n");
 
   printf("[minisolver] hmat finalization ... ");
   interface->finalize();
+  free(interface);
   printf("done\n");
 
   return 0;