Интересная задачка на C.

Блог им. Nemo
Есть задачка. Вместо точек нужно написать свои дание. В другом месте редактировать код нельзя. После запуска программы мы должны получить результат RES: Hello
код:

...

...my_copyStr(...)
{
 ...
}


int main(int argc, char *arcv[ ])
{
 char *zsStrHello = "Hello";
 char *zsResStr =0;

 my_copyStr(...);
 printf("RES: %s",zsResStr);
 
 free(zsResStr);
 
return 0;
}


пытался решить, сделал так:

#include <string.h>
my_copyStr(char **str1, char **str2)
{
 str1 = (malloc((strlen(str2)+1) * sizeof(char));
 strncpy(str1,str2,strlen(str1));
}


int main(int argc, char *arcv[ ])
{
 char *zsStrHello = "Hello";
 char *zsResStr =0;

  my_copyStr(zsResStr,zsStrHello);
 printf("RES: %s",zsResStr);
 
 free(zsResStr);
 
return 0;
}
не работает, результат NULL.

Может кто подскажет как решить?)