(data, offset)
| 106 | |
| 107 | |
| 108 | def parse_name(data, offset): |
| 109 | p = offset |
| 110 | labels = [] |
| 111 | l = common.ord(data[p]) |
| 112 | while l > 0: |
| 113 | if (l & (128 + 64)) == (128 + 64): |
| 114 | # pointer |
| 115 | pointer = struct.unpack('!H', data[p:p + 2])[0] |
| 116 | pointer &= 0x3FFF |
| 117 | r = parse_name(data, pointer) |
| 118 | labels.append(r[1]) |
| 119 | p += 2 |
| 120 | # pointer is the end |
| 121 | return p - offset, b'.'.join(labels) |
| 122 | else: |
| 123 | labels.append(data[p + 1:p + 1 + l]) |
| 124 | p += 1 + l |
| 125 | l = common.ord(data[p]) |
| 126 | return p - offset + 1, b'.'.join(labels) |
| 127 | |
| 128 | |
| 129 | # rfc1035 |
no outgoing calls
no test coverage detected