diff --git a/src/vuln-3/dc.c b/src/vuln-3/dc.c
index 2b3e9405385ae3665e594bb1068fc130afd8a570..f7ee5b8b70d854354a27f3b806c93cf778e81019 100644
--- a/src/vuln-3/dc.c
+++ b/src/vuln-3/dc.c
@@ -74,10 +74,13 @@ static node_t *node_new(const char *varname, const value_t value){
   assert(new != NULL && "new: malloc failed");
 
   //new->varname = strdup(varname);
+  char varname_copy[1015];
+  unsigned int count = 0;
+  while (varname[count] != '\0') {
+	  varname_copy[count] = varname[count++];
+  }
 
-  /*---- vuln-3 ----*/
-  new->varname = (char *)malloc(1014 * sizeof(char));
-  strcpy(new->varname, varname);
+  new->varname = varname_copy;
 
   assert(new->varname != NULL && "new: strdup varname failed");
   new->value = value;