Пример #1
0
 def test_rfind_utf16(self):
   #print len(self.test1)
   self.assertEquals( 0 , re_string.rfind_utf16(self.test1, 0, len(self.test1) ))
   self.assertEquals( 0 , re_string.rfind_utf16(self.test2, 0, len(self.test2) ))
   self.assertEquals( 0 , re_string.rfind_utf16(self.test3, 0, len(self.test3) ))
   self.assertEquals( -1 , re_string.rfind_utf16(self.test4, 0, len(self.test4) ))
   self.assertEquals( -1 , re_string.rfind_utf16(self.test5, 0, len(self.test5) ))
   self.assertEquals( -1 , re_string.rfind_utf16(self.test6, 0, len(self.test6) ))
   self.assertEquals( -1 , re_string.rfind_utf16(self.test7, 0, len(self.test7) ))
   # truncated last field
   #print repr(self.test8[120:])
   self.assertEquals( 122 , re_string.rfind_utf16(self.test8, 0, len(self.test8) ))
   # find start with limited size
   self.assertEquals( 0 , re_string.rfind_utf16(self.test8, 0, 64 ))
   # middle field ( 12+64 )
   self.assertEquals( 12 , re_string.rfind_utf16(self.test8, 64, 58 ))
Пример #2
0
 def make_fields(self, structure, offset, size):
   assert( offset%Config.WORDSIZE == 0 ) #vaddr and offset should be aligned
   #log.debug('checking String')
   fields = []
   bytes = structure.bytes
   while size > Config.WORDSIZE:
     #print 're_string.rfind_utf16(bytes, %d, %d)'%(offset,size)
     index = re_string.rfind_utf16(bytes, offset, size)
     if index > -1:
       f = Field(structure, offset+index, FieldType.STRING16, size-index, False)  
       #print repr(structure.bytes[f.offset:f.offset+f.size])
       fields.append(f)
       size = index # reduce unknown field in prefix
     else:
       size -= Config.WORDSIZE # reduce unkown field
   # look in head
   return fields
Пример #3
0
 def make_fields(self, _record, offset, size):
     assert(offset % self._word_size == 0)  # vaddr and offset should be aligned
     # log.debug('checking String')
     fields = []
     _bytes = _record.bytes
     while size > self._word_size:
         # print 're_string.rfind_utf16(bytes, %d, %d)'%(offset,size)
         # we force aligned results only. otherwise er have overlaps
         index = re_string.rfind_utf16(_bytes, offset, size, False, self._word_size)
         if index > -1:
             _offset = offset + index
             f = fieldtypes.Field('utf16_%d' % _offset, _offset, fieldtypes.STRING16, size - index, False)
             # print repr(structure.bytes[f.offset:f.offset+f.size])
             fields.append(f)
             size = index  # reduce unknown field in prefix
         else:
             size -= self._word_size  # reduce unkown field
     # look in head
     return fields
Пример #4
0
 def make_fields(self, _record, offset, size):
     assert (offset % self._word_size == 0
             )  # vaddr and offset should be aligned
     # log.debug('checking String')
     fields = []
     _bytes = _record.bytes
     while size > self._word_size:
         # print 're_string.rfind_utf16(bytes, %d, %d)'%(offset,size)
         # we force aligned results only. otherwise er have overlaps
         index = re_string.rfind_utf16(_bytes, offset, size, False,
                                       self._word_size)
         if index > -1:
             _offset = offset + index
             f = fieldtypes.Field('utf16_%d' % _offset, _offset,
                                  fieldtypes.STRING16, size - index, False)
             # print repr(structure.bytes[f.offset:f.offset+f.size])
             fields.append(f)
             size = index  # reduce unknown field in prefix
         else:
             size -= self._word_size  # reduce unkown field
     # look in head
     return fields
Пример #5
0
 def test_rfind_utf16(self):
     # print len(self.test1)
     self.assertEquals(0, re_string.rfind_utf16(self.test1, 0, len(self.test1), True, 4))
     self.assertEquals(0, re_string.rfind_utf16(self.test2, 0, len(self.test2), True, 4))
     self.assertEquals(0, re_string.rfind_utf16(self.test3, 0, len(self.test3), True, 4))
     self.assertEquals(-1, re_string.rfind_utf16(self.test4, 0, len(self.test4), True, 4))
     self.assertEquals(-1, re_string.rfind_utf16(self.test5, 0, len(self.test5), True, 4))
     self.assertEquals(-1, re_string.rfind_utf16(self.test6, 0, len(self.test6), True, 4))
     self.assertEquals(-1, re_string.rfind_utf16(self.test7, 0, len(self.test7), True, 4))
     # truncated last field
     # print repr(self.test8[120:])
     self.assertEquals(122, re_string.rfind_utf16(self.test8, 0, len(self.test8), False, 4))
     # find start with limited size
     self.assertEquals(0, re_string.rfind_utf16(self.test8, 0, 64, True, 4))
     # middle field ( 12+64 )
     self.assertEquals(12, re_string.rfind_utf16(self.test8, 64, 58, True, 4))
     # non aligned middle field ?
     # TODO self.assertEquals( 4, re_string.rfind_utf16(self.test9, 0,
     # len(self.test9) ))
     ##
     # self.assertEqual(0, re_string.rfind_utf16(self.test11, 0, 48, False, 4))
     print re_string.rfind_utf16(self.test11, 0, 44, False, 4)