No, it doesn't cause a memory leak, but only because you're trashing memory your program most likely doesn't own. 
To allocate memory dynamically use something like malloc().
Code:
int doSomeSillyThing(char **msg)
{
static char *bleh = "Are you sure this is not causing a memory leak?";
*msg = malloc(strlen(bleh) + 1);
strcpy(*msg, bleh);
return 10;
}
Note: You must free() the memory you allocate. However, you have a different problem to address first. You should be declaring msg in main() as a char *, and then passing its address. So in main()....:
Code:
int main()
{
char *msg;
int code = doSomeSillyThing(&msg);
printf("msg = %s\n", msg);
free(msg);
return 0;
}
Note all the changes. They are important. 
Edit: And don't forget to include the proper header files. stdio.h is needed for printf() and stdlib.h is needed for malloc() and free().