Fix strncat length bug

This was a pretty simple bug, strncat() takes an argument that's one
less than the length of the buffer to write into.

Apparently GCC only emits this warning under -O2, not -O0...