Source code for angr.angrdb.serializers.labels

# pylint:disable=unused-import
from ..models import DbLabel
from ...knowledge_plugins.labels import Labels


[docs]class LabelsSerializer: """ Serialize/unserialize labels to/from a database session. """
[docs] @staticmethod def dump(session, db_kb, labels): """ :param session: :param DbKnowledgeBase db_kb: :param Labels labels: :return: None """ for addr, name in labels.items(): db_label = ( session.query(DbLabel) .filter_by( kb=db_kb, addr=addr, ) .scalar() ) if db_label is not None: if name == db_label.name: continue db_label.name = name else: db_label = DbLabel( kb=db_kb, addr=addr, name=name, ) session.add(db_label)
[docs] @staticmethod def load(session, db_kb, kb): # pylint:disable=unused-argument """ :param session: :param DbKnowledgeBase db_kb: :param KnowledgeBase kb: :return: """ db_labels = db_kb.labels labels = Labels(kb) for db_label in db_labels: labels[db_label.addr] = db_label.name return labels