Fix varargs use

"man stdarg" says:
  If ap is passed to a function that uses va_arg(ap,type) then the value
  of ap is undefined after the return of that function.

va_start(…) and va_end(…) must be called at each iteration.

By chance, it worked in 32 bits, but it segfaulted in 64 bits.

See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31484
Dump mdp header if we fail to parse length field