Hello to all.

According to documentation the code below produces undefined behaviour?

Code:
#include<stdio.h>
#include<string.h>

int main(void)
{
	char str1[]="Hello";
	char str2[]="This string is bigger than str1";
	
	strcpy(str1,str2);
	
	puts(str1);
	
return 0;
}
The

Code:
 strcpy (str1 , strcpy(str2 , "abcd");
is recursion ?