krb4's vts_long() and vts_short() modify the passed in pointer so that the caller can no longer free it -- they return a pointer to the middle of the buffer. Also, they both write to the beginning of the buffer passed in, not appending data to the end like they should be doing.