Add fuzzing harness for strprintf(…).
Update FuzzedDataProvider.h.
Avoid hitting some issues in tinyformat (reported upstreams in https://github.com/c42f/tinyformat/issues/70).
Found issues in tinyformat:
Issue 1. The following causes a signed integer overflow followed by an allocation of 9 GB of RAM (or an OOM in memory constrained environments):
strprintf("%.777777700000000$", 1.0);
Issue 2. The following causes a stack overflow:
strprintf("%987654321000000:", 1);
Issue 3. The following causes a stack overflow:
strprintf("%1$*1$*", -11111111);
Issue 4. The following causes a NULL pointer dereference:
strprintf("%.1s", (char *)nullptr);
Issue 5. The following causes a float cast overflow:
strprintf("%c", -1000.0);
Issue 6. The following causes a float cast overflow followed by an invalid integer negation:
strprintf("%*", std::numeric_limits<double>::lowest());