Changeset 255
- Timestamp:
- 06/13/11 15:15:08 (14 years ago)
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
test/pyregfi-smoketest.py
r253 r255 106 106 global recurseKey_stat 107 107 global recurseValue_stat 108 recurseKey_stat += (key.mtime .low^key.mtime.high- key.max_bytes_subkeyname) * key.flags108 recurseKey_stat += (key.mtime - key.max_bytes_subkeyname) * key.flags 109 109 for v in key.values: 110 110 recurseValue_stat += (v.data_off - v.data_size) / (1.0 + v.flags) + v.data_in_offset 111 value = key.values[v.name] 112 if v != value: 113 print("WARNING: iterator value '%s' does not match dictionary value '%s'." 114 % (v.name, value.name)) 111 try: 112 value = key.values[v.name] 113 if v != value: 114 print("WARNING: iterator value '%s' does not match dictionary value '%s'." 115 % (v.name, value.name)) 116 except Exception as e: 117 print("WARNING: iterator value name '%s' is not retrievable via value list\n" 118 % (v.name,)) 119 115 120 116 121 def recurseTree(cur, operation): … … 258 263 print(" Security stat: %d" % stat) 259 264 265 260 266 tests = { 261 267 "iterTallyNames":iterTallyNames, … … 286 292 if st not in tests: 287 293 usage() 288 sys.stderr.write("ERROR: %s not a valid test type " % st)294 sys.stderr.write("ERROR: %s not a valid test type\n\n" % st) 289 295 sys.exit(1) 290 296 … … 296 302 start_time = time.time() 297 303 for hname,fh in files: 298 hive = pyregfi.Hive(fh) 304 #hive = pyregfi.Hive(fh) 305 hive = pyregfi.openHive(hname) 299 306 for tname in selected_tests: 300 307 t = tests[tname] -
trunk/lib/regfi.c
r253 r255 1511 1511 regfi_log_add(REGFI_LOG_WARN, "Could not parse cell at offset" 1512 1512 " 0x%.8X while searching for root key.", cur_offset); 1513 return NULL;1513 goto error_locked; 1514 1514 } 1515 1515 … … 1530 1530 } 1531 1531 1532 return NULL; 1533 1534 error_locked: 1535 regfi_unlock(file, &file->cb_lock, "regfi_find_root_nk"); 1532 1536 return NULL; 1533 1537 } -
trunk/python/pyregfi/__init__.py
r253 r255 258 258 # Memory management for most regfi structures is taken care of here 259 259 def __del__(self): 260 regfi.regfi_free_record(self._hive.file, self._base) 260 if self._base: 261 regfi.regfi_free_record(self._hive.file, self._base) 261 262 262 263 … … 683 684 file = None 684 685 raw_file = None 685 _root = None 686 _fh = None 687 #_root = None 688 686 689 687 690 ## The root Key of this Hive … … 723 726 # The fileno method may not exist, or it may throw an exception 724 727 # when called if the file isn't backed with a descriptor. 728 self._fh = fh 725 729 fn = None 726 730 try: … … 766 770 767 771 def __del__(self): 768 regfi.regfi_free(self.file) 769 if self.raw_file != None: 770 self.raw_file = None 771 772 if self.file: 773 regfi.regfi_free(self.file) 772 774 773 775 def __iter__(self): -
trunk/python/pyregfi/structures.py
r253 r255 97 97 98 98 99 from winsec import *99 from .winsec import * 100 100 101 101 REGFI_VK._fields_ = [('offset', c_uint32), -
trunk/python/pyregfi/winsec.py
r254 r255 11 11 import ctypes.util 12 12 from ctypes import * 13 import structures 13 from .structures import regfi 14 14 15 15 is_win32 = hasattr(ctypes, 'windll') … … 77 77 ('dacl', POINTER(WINSEC_ACL)), 78 78 ] 79 80 structures.regfi.winsec_sid2str.argtypes = [POINTER(WINSEC_DOM_SID)] 81 structures.regfi.winsec_sid2str.restype = POINTER(c_char) 79 regfi.winsec_sid2str.argtypes = [POINTER(WINSEC_DOM_SID)] 80 regfi.winsec_sid2str.restype = POINTER(c_char) 82 81 83 82 … … 128 127 self.inherited_object = _guid2uuid(ace.inh_guid) 129 128 130 c_str = structures.regfi.winsec_sid2str(ace.trustee)129 c_str = regfi.winsec_sid2str(ace.trustee) 131 130 self.trustee = ctypes.cast(c_str, c_char_p).value.decode('utf-8', 'replace') 132 131 libc.free(c_str) … … 153 152 154 153 def __init__(self, sec_desc): 155 c_str = structures.regfi.winsec_sid2str(sec_desc.owner_sid)154 c_str = regfi.winsec_sid2str(sec_desc.owner_sid) 156 155 self.owner = ctypes.cast(c_str, c_char_p).value.decode('utf-8', 'replace') 157 156 libc.free(c_str) 158 157 159 c_str = structures.regfi.winsec_sid2str(sec_desc.grp_sid)158 c_str = regfi.winsec_sid2str(sec_desc.grp_sid) 160 159 self.group = ctypes.cast(c_str, c_char_p).value.decode('utf-8', 'replace') 161 160 libc.free(c_str)
Note: See TracChangeset
for help on using the changeset viewer.