These reviews are from cargo-vet. To add your review, set up cargo-vet and submit your URL to its registry.

The current version of AhoCorasick is 1.1.3.

cargo-vet does not verify reviewers' identity. You have to fully trust the source the audits are from.

safe-to-deploy (implies safe-to-run)

This crate will not introduce a serious security vulnerability to production software exposed to untrusted input. More…

safe-to-run

This crate can be compiled, run, and tested on a local workstation or in controlled automation without surprising consequences. More…

does-not-implement-crypto (implies crypto-safe)

Inspection reveals that the crate in question does not attempt to implement any cryptographic algorithms on its own.

Note that certification of this does not require an expert on all forms of cryptography: it's expected for crates we import to be "good enough" citizens, so they'll at least be forthcoming if they try to implement something cryptographic. When in doubt, please ask an expert.

crypto-safe
Implied by other criteria

All crypto algorithms in this crate have been reviewed by a relevant expert.

Note: If a crate does not implement crypto, use does-not-implement-crypto, which implies crypto-safe, but does not require expert review in order to audit for.

unknown

May have been packaged automatically without a review


This review is from Crev, a distributed system for code reviews. To add your review, set up cargo-crev.

The current version of AhoCorasick is 1.1.3.

0.7.6 (older version) Rating: Positive Thoroughness: High Understanding: High

by BurntSushi on 2019-08-22

I wrote this crate, so this review is a reflection as a result of writing the code and then reviewing it again for this review.

While the aho-corasick crate is not often used directly, it is a key optimization technique used in the regex crate for quickly finding potential matches by searching literals.

I gave this crate a rating of positive instead of the highest strong because it was somewhat recently rewritten. So it hasn't been thoroughly vetted yet.

At a higher level, one concern point of this crate is that it has a lot of unsafe usage. While a small number of those unsafe uses are for the Aho-Corasick algorithm itself---mostly for explicitly eliding bounds checks for performance reasons---the vast majority of all unsafe uses are for the implementation of the Teddy algorithm, which makes heavy use of SIMD through explicit CPU specific vendor intrinsics. The Teddy algorithm is used as a fast prefilter to quickly find potential matches when searching for a smaller number of patterns. The speedups can be an order of magnitude, so the extra code complexity is worth it.

As with the memchr crate, both the Aho-Corasick algorithm and the Teddy algorithm are thoroughly tested. Both are tested independently of one another and when they are used together. Like the memchr crate, the Teddy algorithm is tested on a wide variety of haystack configurations to test different haystack lengths and match positions, all of which can exercise different aspects of the Teddy algorithm. If one counted the total number of tests for the entire crate (including variations on each), it would easily be in the tens of thousands.


Lib.rs has been able to verify that all files in the crate's tarball are in the crate's repository with a git tag matching the version. Please note that this check is still in beta, and absence of this confirmation does not mean that the files don't match.

Crates in the crates.io registry are tarball snapshots uploaded by crates' publishers. The registry is not using crates' git repositories, so there is a possibility that published crates have a misleading repository URL, or contain different code from the code in the repository.

To review the actual code of the crate, it's best to use cargo crev open aho-corasick. Alternatively, you can download the tarball of aho-corasick v1.1.3 or view the source online.