Beispiel #1
0
static void	get_lib_file(size_t addr, size_t base_elf)
{
  char		maps[256];
  int		fd;

  snprintf(maps, sizeof(maps) - 1, "/proc/%u/maps", g_pid);
  if ((fd = open(maps, O_RDONLY)) < 0)
    return ;
  get_lib(fd, addr, base_elf);
  close(fd);
}
Beispiel #2
0
int criticity_init(void)
{
  char *fname;
  xmlDocPtr doc;
  xmlNodePtr root;
  xmlNodePtr node;

  /* Clear old criticity level definitions */
  criticity_destroy();

  /* Get criticity level definition file name */
  fname = get_lib("criticity.xml");
  if ( fname == NULL ) {
    fprintf(stderr, "*WARNING* Unable to find criticity definition file 'criticity.xml'\n");
    return -1;
  }
  fprintf(stderr, "Criticity Levels definition file: %s\n", fname);

  /* Parse criticity level definitions */
  doc = xmlParseFile(fname);
  if ( doc != NULL ) {
    root = xmlDocGetRootElement(doc);
    if ( root != NULL ) {
      node = root->children;
      while ( node != NULL ) {
	if ( node->type == XML_ELEMENT_NODE ) {
	  if ( strcmp((char *) node->name, "CRITICITY") == 0 ) {
	    xmlChar *id = xmlGetProp(node, (xmlChar *) "id");
	    xmlChar *color = xmlGetProp(node, (xmlChar *) "color");
	    xmlChar *level = xmlGetProp(node, (xmlChar *) "level");
	    int i;

	    i = atoi((char *) level);
	    if ( i >= criticity_nb ) {
	      int nb = i + 5;
	      criticity_tab = (criticity_item_t *) realloc(criticity_tab, nb * sizeof(criticity_item_t));
	      while ( criticity_nb < nb ) {
		criticity_tab[criticity_nb].id = NULL;
		criticity_tab[criticity_nb].id_uc = NULL;
		criticity_tab[criticity_nb].color = NULL;
		criticity_nb++;
	      }
	    }

	    criticity_tab[i].id = strdup((char *) id);
	    criticity_tab[i].id_uc = strupper(strdup((char *) id));
	    criticity_tab[i].color = strdup((char *) color);

	    xmlFree(level);
	    xmlFree(color);
	    xmlFree(id);
	  }
	}
	node = node->next;
      }
    }

    xmlFreeDoc(doc);
  }

  xmlCleanupParser();
  free(fname);

  /* Set CRITICITY_NONE entry */
  if ( criticity_nb > 0 ) {
    criticity_tab[0].id = strdup("");
    criticity_tab[0].id_uc = strdup("");
    criticity_tab[0].color = strdup("black");
  }

  return 0;
}