Coverity fixes

This fixes a few problems pointed out by the coverity scan including missing checks for OOM, not checking error codes, memory leaks etc.

This doesn't fix nearly all of the problems but does address lots of the low hanging fruit.
Same as above. We do not want to return `-1` as a pointer return.