diff --git a/psys/src/newci.c b/psys/src/newci.c
index 36d430e9e1afce479b4458c5890192c67d6da76a..4722a896e9c486262c61629c2090d24042743d7d 100644
--- a/psys/src/newci.c
+++ b/psys/src/newci.c
@@ -67,21 +67,15 @@ static void goodfixname(char *name, char *ext, char *home, int force)
 {
 	size_t i;
 	int hassuffix;
+	char STR1[256];
 	size_t len = strlen(name);
 
 	/* fs_zapspaces(name); */
 	if (len > 2 && name[0] == '*' && name[1] == '*')
 	{
-		char *sz_tmp = malloc(sizeof(char) * len + 1);
-		strcpy(sz_tmp, name);
+		strcpy_overlap(name, name + 2);
 
-		/* expand to can add home */
-		len += strlen(home) + 1; /* name + home + '\0' */
-		name = realloc(name, sizeof(char) * len);
-
-		/* Add home value before the name value */ 
-		sprintf(name, "%s%s", home, sz_tmp);
-		free(sz_tmp);
+		sprintf(name, "%s%s", home, strcpy(STR1, name));
 	}
 
 	if (force)