That's a good reason to rename one of them because they're completely different semantics and behaviour, and confusing one for the other is a direct route to segfault city.
the function is accepting a pointer to an uninitialized array of char, and initializing the array of char. With what you'd call an "out parameter", like
char *buf;
asprintf(&buf, "hello");
the function is accepting a pointer to an uninitialized pointer to array of char, and initializing the pointer. The caller still controls the allocation of storage for the pointer itself.
At this point of the lifetime C-language, hoping for the commonly accepted terminology to change, is probably futile. Anyway, for out parameters, the common convention is:
Caller provides one object for output:
void callee(Obj *obj);
Caller provides an array for output:
void callee(Obj *obj, size_t obj_size);
Caller provides an pointer, to which callee allocates a new object: