* Stop when opening a database fails. This will avoid null pointer
dereferences.
* Use C++11 smart pointers for leveldb::DB and leveldb::Iterator. This
makes it easier to ensure the fuzzer doesn't leak memory. No leak was
detected while applying this fix.
* Use the FuzzedDataProvider API exclusively for consuming data. This
makes it easier to ensure maximum fuzzer coverage.
* Avoid building unnecessary code (tests, benchmarks). This slightly
reduces oss-fuzz resource usage.
* Use an enum class and FuzzedDataProvider::ConsumeEnum() instead of
reimplementing it. This makes it easier to extend the fuzzer with new
operations in the future.
* Use meaningful names (key, value, name) instead of tmp* for local
variables storing leveldb API inputs.