Strstr함수 구현중 세그멘테이션 오류나는데 도와주세요 ㅠ

#include<stdio.h>

int str_length(const char *str1)
{
int i=0;
while(str1[i]){
i++;
}
return i;
}
const char *str_str(const char *str1, const char *str2)
{
printf("str1 ->%s, length ->%d\n",str1,str_length(str1));
printf("str2 ->%s, length ->%d\n",str2,str_length(str2));

int i=0;
int j=0;
const char *real;
for(j=0; j<(str_length(str1)); j++)//
{
if(str2[i] == str1[j])//
{
if(str2[0] == str1[j]) real = &str1[j];//찾고자하는 문자열 첫번째 인자와 같을 경우 첫번째 문자 주소값 저장
i++;// 두번째 인자와 또 비교하기위해 i값증가
if((real+i-1) == &str1[j]) //문자열이 연속하는가?
{
if((i==(str_length(str2)))) return real; //찾고자하는 문자열의 길이와 i길이가 같으면 리턴
else{}
}
else i=0;
}
else
{
i=0;
}
}
return NULL;
}

int main(void)
{
char *str ="forum.falinux.com-embedded linux forum";
printf("%s\n",str_str(str,"umx"));
return 0;
}

strstr함수 구현중 세그멘테이션 오류나는데 어느 부분이 문제인지 모르겠네요
고수님들 혹시 가르쳐주실 수 있으신가요ㅠ