Testing Error Handling Code With Software Fault Injection and Error-Coverage-Guided Fuzzing