...
1 package ntlmssp
2
3 import (
4 "errors"
5 )
6
7 type varField struct {
8 Len uint16
9 MaxLen uint16
10 BufferOffset uint32
11 }
12
13 func (f varField) ReadFrom(buffer []byte) ([]byte, error) {
14 if len(buffer) < int(f.BufferOffset+uint32(f.Len)) {
15 return nil, errors.New("Error reading data, varField extends beyond buffer")
16 }
17 return buffer[f.BufferOffset : f.BufferOffset+uint32(f.Len)], nil
18 }
19
20 func (f varField) ReadStringFrom(buffer []byte, unicode bool) (string, error) {
21 d, err := f.ReadFrom(buffer)
22 if err != nil {
23 return "", err
24 }
25 if unicode {
26 return fromUnicode(d)
27 }
28
29 return string(d), err
30 }
31
32 func newVarField(ptr *int, fieldsize int) varField {
33 f := varField{
34 Len: uint16(fieldsize),
35 MaxLen: uint16(fieldsize),
36 BufferOffset: uint32(*ptr),
37 }
38 *ptr += fieldsize
39 return f
40 }
41
View as plain text