--- libsndfile-1.0.25.orig/src/common.c +++ libsndfile-1.0.25/src/common.c @@ -672,12 +672,12 @@ psf_binheader_writef (SF_PRIVATE *psf, c /* Write a C string (guaranteed to have a zero terminator). */ strptr = va_arg (argptr, char *) ; size = strlen (strptr) + 1 ; - size += (size & 1) ; if (psf->rwf_endian == SF_ENDIAN_BIG) - header_put_be_int (psf, size) ; + header_put_be_int (psf, size + (size & 1)) ; else - header_put_le_int (psf, size) ; + header_put_le_int (psf, size + (size & 1)) ; memcpy (&(psf->header [psf->headindex]), strptr, size) ; + size += (size & 1) ; psf->headindex += size ; psf->header [psf->headindex - 1] = 0 ; count += 4 + size ; @@ -694,10 +694,9 @@ psf_binheader_writef (SF_PRIVATE *psf, c header_put_be_int (psf, size) ; else header_put_le_int (psf, size) ; - memcpy (&(psf->header [psf->headindex]), strptr, size + 1) ; + memcpy (&(psf->header [psf->headindex]), strptr, size + (size & 1)) ; size += (size & 1) ; psf->headindex += size ; - psf->header [psf->headindex] = 0 ; count += 4 + size ; break ;