Algorithm to search substring in a circular string?
Create a temporary source string by concatenating itself together until the length of the source string is at least twice the length of the search string.  The source string must be concatenated at least once.

Then perform a simple (non-circular) search on that temporary string.