Example #1
0
        internal void ReadValue(NdrBinaryStream stream)
        {
            Id = stream.ReadString();

            stream.Align(4);

            var count = stream.ReadInt();

            if (count != Count)
            {
                throw new InvalidDataException($"ValueCount {Count} doesn't match actual count {count} for claim {Id}.");
            }

            ReadValues(stream);
        }
Example #2
0
        public string ReadString(NdrBinaryStream reader)
        {
            if (pointer == 0)
            {
                return(null);
            }

            var result = reader.ReadString(maxLength);

            int expected = length / 2;

            if (result.Length != expected)
            {
                throw new InvalidDataException($"Read length {result.Length} doesn't match expected length {expected}");
            }

            return(result);
        }
Example #3
0
        private void ReadValues(NdrBinaryStream stream)
        {
            if (Type == ClaimType.CLAIM_TYPE_STRING)
            {
                var pointers = new int[Count];

                for (var i = 0; i < Count; i++)
                {
                    pointers[i] = stream.ReadInt();
                }
            }

            values = new object[Count];

            for (var i = 0; i < Count; i++)
            {
                switch (Type)
                {
                case ClaimType.CLAIM_TYPE_BOOLEAN:
                    values[i] = Convert.ToBoolean(stream.ReadLong());
                    break;

                case ClaimType.CLAIM_TYPE_INT64:
                    values[i] = stream.ReadLong();
                    break;

                case ClaimType.CLAIM_TYPE_UINT64:
                    values[i] = (ulong)stream.ReadLong();
                    break;

                case ClaimType.CLAIM_TYPE_STRING:
                    values[i] = stream.ReadString();
                    break;
                }
            }
        }