Falla de Seg al intentar agregar cadenas

Estoy tratando de adjuntar una cadena a otra, y tengo una falla de seguridad y parece que no puedo entender lo que estoy haciendo mal.

typedef char * String; String function(String str) { // Some variables here String current = ""; String ch = ""; //More code here while() { if() { current = malloc(strlen(current) + strlen(ch) + 1); strcat(current, ch); } ... } } 

Sigo teniendo una falla de seguridad incluso con la línea strcat comentada, y viceversa con la línea malloc . Probablemente sea algo dolorosamente obvio que me esté perdiendo, pero ¿podría alguien explicar cómo hacerlo correctamente, hacer esto y explicar lo que he hecho mal?

current no es ‘\ 0’ terminado después de malloc .
strcat está buscando este personaje para saber dónde anexar y segfaults haciendo esto.

Su inicialización previa de la current no tiene ningún significado después de que malloc regrese, apunta a una parte completamente diferente de la memoria no inicializada.
No puedo decirlo con certeza, pero según lo que proporcionaste, mi consejo es usar realloc para ampliar el tamaño de la current .

Después de su malloc se está olvidando de llenar la nueva cadena asignada con el contenido current anterior, y no puede hacerlo porque perdió la referencia (aún más, está introduciendo una pérdida de memoria porque no la está liberando. Intente realloc en su lugar – pero primero asigne current con malloc