Please review my strstr implementation. This is an interview question that does not allow the use of `strlen()`. Is there a better way than using a boolean below?

    #include <iostream>
    #include <cstring>
    char* my_strstr(char * s1, const char *s2)
    {
      if ( s1 == NULL || s2 == NULL )
        return NULL;
    
      size_t s2Size = 0;
    
      const char *end = s2;
      while (*end++)
        ++s2Size;
    
      bool match;
      while ( *s1 )
      {
        match = true;
        for ( int i = 0; i < s2Size ; ++i )
        {
          if ( s1[i] != s2[i] )  
          {
            match = false;
            break;
          }
        }
        if ( match )
          return s1;
    
        ++s1;
      }
      return NULL;
    }
    
    const char* my_strstr(const char * s1, const char *s2)
    {
      return my_strstr(const_cast<char*>(s1),s2);
    }
    
    
    int main()
    {
      const char str[]= "This is a strstr test";
      const char search[]= "strstr";
    
      const char *result = my_strstr(str,search);
    
      if ( result )
        printf("original: %s\n item: %s\n found: %s\n", str, search, result );
    }