How not to find a trailing substring match



  • This code is paraphrased from some open source:

    // Consider host.domain.invalid and *.domain.invalid:
    // "host.domain.invalid".Find(".domain.invalid") is 4
    // 4 + strlen(".domain.invalid") == 4 + 15 == 19 == strlen("host.domain.invalid")
    // Prerequiste: wildcardString begins with "*.".
    static bool
    HostMatchesWildcard(const char* host, string wildcard)
    {
      if (!host)
        return false;
    
      string wildcardSubstr(wildcard.c_str() + 1, wildcard.length() - 1);
      string hostString(host, strlen(host));
      size_t index = hostString.find(wildcardSubstr);
      return index != string::npos &&
             index + wildcardSubstr.length() == hostString.length();
    }

    (Names have been changed to protect the guilty.)




Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.