def getFragment(self, frag): stream = frag.getSubIStream() ministream = guessParser(stream) if not ministream: warning("Unable to create the OLE2 mini stream parser!") return frag return ministream
def getFieldAttribute(fieldset, key, attrname): try: field = fieldset[key] if field.hasValue(): return getattr(field, attrname) except Exception as err: warning("Unable to get %s of field %s/%s: %s" % ( attrname, fieldset.path, key, err)) return None
def useProperties(self, properties): last = properties["total_str_length"] offset0 = last.address + last.size for index in properties.array("property"): # Search name and value value = properties.getFieldByAddress(offset0 + index["value_offset"].value * 8) if not value: continue value = value.value if not value: continue name = properties.getFieldByAddress(offset0 + index["name_offset"].value * 8) if not name: continue name = name.value if name not in self.PROP_TO_KEY: warning("Skip %s=%r" % (name, value)) continue key = self.PROP_TO_KEY[name] setattr(self, key, value)
def doparse(self, stream, fallback=True): fb = None warn = warning for parser in self.parsers: try: parser_obj = parser(stream, validate=self.validate) if self.parser_args: for key, value in self.parser_args.iteritems(): setattr(parser_obj, key, value) return parser_obj except ValidateError as err: if fallback and self.fallback: fb = parser if parser == self.other: warn = info warn("Skip parser '%s': %s" % (parser.__name__, err)) except Exception as err: if parser == self.other: warn = info warn("Skip parser '%s': %s" % (parser.__name__, err)) fallback = False if self.use_fallback and fb: warning(_("Force use of parser '%s'") % fb.__name__) return fb(stream)
def safe_func(*args, **kw): try: func(*args, **kw) except Exception as err: warning("Error when calling function %s(): %s" % ( func.__name__, err))