Why not just use StringRef::startswith? That also does the length check first, 
which is more efficient than looking for the end of both strings at every 
character.


On Oct 3, 2012, at 13:58 , Benjamin Kramer <[email protected]> wrote:

> Author: d0k
> Date: Wed Oct  3 15:58:09 2012
> New Revision: 165157
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=165157&view=rev
> Log:
> Fix invalid reads by memcmp.
> 
> Str may be smaller than Start->Name here. Use strncmp to avoid scanning past 
> the
> end. Found by valgrind.
> 
> Modified:
>    cfe/trunk/lib/Driver/OptTable.cpp
> 
> Modified: cfe/trunk/lib/Driver/OptTable.cpp
> URL: 
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/OptTable.cpp?rev=165157&r1=165156&r2=165157&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Driver/OptTable.cpp (original)
> +++ cfe/trunk/lib/Driver/OptTable.cpp Wed Oct  3 15:58:09 2012
> @@ -162,7 +162,7 @@
>   for (; Start != End; ++Start) {
>     // Scan for first option which is a proper prefix.
>     for (; Start != End; ++Start)
> -      if (memcmp(Str, Start->Name, strlen(Start->Name)) == 0)
> +      if (strncmp(Str, Start->Name, strlen(Start->Name)) == 0)
>         break;
>     if (Start == End)
>       break;
> 
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to