Leaks udesc.
There should probably be a createUserDescriptor(MemoryBuffer &mb) - which creates and deserializes and then this looks like

> udesc.setown(createUserDescriptor(mb);