DecodePacketErr returns error information, we should update to use this and propagate errors
also, we should add bounds checking helpers that return a child packet or an error
would do this on a major release boundary since it would probably mean tweaking function return values