ALSA's snd_output_buffer_string() returns the current size of valid
data in the returned data buffer, but this buffer is not guaranteed
to be zero-terminated.
Currently alsa_init() ignores this fact and prints the buffer up to
the first NULL byte. Therefore it may print garbage that follows the
valid data in the buffer. If there is no zero byte after the data,
it may even segfault.
Fix this bug by using memchr() instead of strchr() and carefully
tracking the number of bytes processed.