72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/rex/struct2/s_struct.rb', line 72
def from_s(obytes)
bytes = obytes.dup
length = 0
if restraint
max = restraint.max
bytes = bytes.slice(0, max) if max
end
elements.each { |e|
used = e.from_s(bytes)
return if !used
bytes.slice!(0, used)
length += used
}
if restraint
min = restraint.min
return if min && length < min
end
self.value = obytes.slice(0, length)
self.leftover = bytes
return(length)
end
|