':param location_a: The plugin that saved the data to the
kb.info Typically the name of the plugin,
but could also be the plugin instance.
:param location_b: The name of the variables under which the vuln
objects were saved. Typically the same name of
the plugin, or something like "vulns", "errors",
etc. In most cases this is NOT None. When set
to None, a dict with all the vuln objects found
by the plugin_name is returned.
:return: Returns the data that was saved by another plugin.'

@requires_setup
def get(self, location_a, location_b, check_types=True):

    location_a = self._get_real_name(location_a)
    if (location_b is None):
        query = 'SELECT    pickle    FROM    %s    WHERE    location_a    =    ?'
        params = (location_a,)
    else:
        query = 'SELECT    pickle    FROM    %s    WHERE    location_a    =    ?    and    location_b    =    ?'
        params = (location_a, location_b)
    result_lst = []
    results = self.db.select((query % self.table_name), params)
    for r in results:
        obj = cPickle.loads(r[0])
        if (check_types and (not isinstance(obj, (Info, InfoSet, Shell)))):
            raise TypeError('Use    raw_write    and    raw_read    to    query    the    knowledge    base    for    non-Info    objects')
        result_lst.append(obj)
    return result_lst
