Class: RubySMB::Dcerpc::Ndr::NdrPointer
- Inherits:
-
BinData::Primitive
- Object
- BinData::Primitive
- RubySMB::Dcerpc::Ndr::NdrPointer
show all
- Defined in:
- lib/ruby_smb/dcerpc/ndr.rb
Overview
Instance Method Summary
collapse
Instance Method Details
#do_read(io) ⇒ Object
224
225
226
227
228
229
|
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 224
def do_read(io)
self.referent_id.do_read(io)
if process_referent?
self.referent.do_read(io) unless self.referent_id == 0
end
end
|
#do_write(io) ⇒ Object
231
232
233
234
235
236
|
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 231
def do_write(io)
self.referent_id.do_write(io)
if process_referent?
self.referent.do_write(io) unless self.referent_id == 0
end
end
|
#get ⇒ Object
252
253
254
255
256
257
258
|
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 252
def get
if self.referent_id == 0
:null
else
self.referent
end
end
|
#process_referent? ⇒ Boolean
260
261
262
263
264
265
266
267
|
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 260
def process_referent?
current_parent = parent
loop do
return true unless current_parent
return false if current_parent.is_a?(NdrStruct)
current_parent = current_parent.parent
end
end
|
#set(v) ⇒ Object
238
239
240
241
242
243
244
245
246
247
248
249
250
|
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 238
def set(v)
if v == :null
self.referent.clear
self.referent_id = 0
else
if self.referent.respond_to?(:set)
self.referent.set(v)
else
self.referent = v
end
self.referent_id = rand(0xFFFFFFFF) if self.referent_id == 0
end
end
|