Exemple #1
0
/*ARGSUSED*/
static int
gather_map(void *ignored, const prmap_t *map, const char *objname)
{
    mapdata_t *data;

    /* Skip mappings which are outside the range specified by -A */
    if (!address_in_range(map->pr_vaddr,
                          map->pr_vaddr + map->pr_size, map->pr_pagesize))
        return (0);

    data = nextmap();
    data->md_map = *map;
    if (data->md_objname != NULL)
        free(data->md_objname);
    data->md_objname = objname ? strdup(objname) : NULL;

    return (0);
}
Exemple #2
0
/*ARGSUSED*/
static int
gather_xmap(void *ignored, const prxmap_t *xmap, const char *objname,
            int last, int doswap)
{
    mapdata_t *data;

    /* Skip mappings which are outside the range specified by -A */
    if (!address_in_range(xmap->pr_vaddr,
                          xmap->pr_vaddr + xmap->pr_size, xmap->pr_pagesize))
        return (0);

    data = nextmap();
    data->md_xmap = *xmap;
    if (data->md_objname != NULL)
        free(data->md_objname);
    data->md_objname = objname ? strdup(objname) : NULL;
    data->md_last = last;
    data->md_doswap = doswap;

    return (0);
}
Exemple #3
0
int checkCIDR(redisContext *context, const char *actor, char *reason, char *list, expanding_vector *ev, time_t *last_update_time)
{
  int ip = ip_address_to_integer(actor);
  if (ip == BAD_ADDRESS)
    return BAD_ADDRESS;

  int rc = check_and_update_cache(context, actor, reason, list, ev, last_update_time);
  if (rc != 0) {
    return rc;
  }

  for(int i = 0; i < ev->size; ++ i) {
    range *range = &(ev->data[i]);
    if (address_in_range(range, ip) > 0) {
      redisReply* value = redisCommand(context, "GET %s:repsheet:cidr:%s", range->block, list);
      if (value) {
        populate_reason(value, reason);
        freeReplyObject(value);
      }
      return TRUE;
    }
  }
  return FALSE;
}