Example #1
0
void *tm_realloc(void *old_ptr, size_t size, char *file, int line){
  byte *ptr;
  size_t full_size;

  init_extra_data();

  full_size = size + 2 * EXTRA_BYTE;

  ptr = malloc(full_size);
  save_ptr(ptr, full_size, file, line);

  if(tm_get_verbose_level()>=DEBUG)
    printf("tm_realloc of size %ld: %p (%s: %d)\n",full_size-2*EXTRA_BYTE,ptr, file, line);


  memcpy(ptr, extra_data, EXTRA_BYTE);
  memcpy(ptr + full_size - EXTRA_BYTE, extra_data, EXTRA_BYTE);

  if(old_ptr){
    byte *original_ptr = ((byte *)old_ptr) - EXTRA_BYTE;
    size_t old_ptr_size = retreive_size(original_ptr);

    memcpy(ptr + EXTRA_BYTE, old_ptr, MIN(old_ptr_size - 2 * EXTRA_BYTE, size));

    if((bcmp(original_ptr ,extra_data, EXTRA_BYTE)) && ((tm_get_verbose_level()>=ERROR))){
      fprintf(stderr,"Realloc: cannot find special string ***before*** %p!\n", original_ptr);
      fprintf(stderr,"memory is probably corrupted here!\n");
    }

    if((bcmp(original_ptr + old_ptr_size -EXTRA_BYTE ,extra_data, EXTRA_BYTE)) && ((tm_get_verbose_level()>=ERROR))){
      fprintf(stderr,"Realloc: cannot find special string ***after*** %p!\n", original_ptr);
      fprintf(stderr,"memory is probably corrupted here!\n");
    }

    if(tm_get_verbose_level()>=DEBUG)
      printf("tm_free freeing: %p\n",original_ptr);


    free(original_ptr);
  }


  if(tm_get_verbose_level()>=DEBUG)
    printf("tm_realloc returning: %p (----- %p)\n",ptr+EXTRA_BYTE, ((byte *)ptr) - EXTRA_BYTE);


  return (void *)(ptr+EXTRA_BYTE);
}
Example #2
0
ci_service_module_t *add_service(ci_service_module_t *service)
{
     struct ci_service_xdata *xdata=NULL;
     struct ci_conf_entry *cfg_table;

     if (service_list == NULL) {
          service_list_size = STEP;
          service_list = malloc(service_list_size * sizeof(ci_service_module_t *));
          service_extra_data_list =
              malloc(service_list_size * sizeof(ci_service_xdata_t));
     }
     else if (services_num == service_list_size) {
          service_list_size += STEP;
          service_list =
              realloc(service_list,
                      service_list_size * sizeof(ci_service_module_t *));
          service_extra_data_list = realloc(service_extra_data_list,
                                            service_list_size *
                                            sizeof(ci_service_xdata_t));
     }

     if (service_list == NULL || service_extra_data_list == NULL) {
          ci_debug_printf(1,
                          "Fatal error: Cannot allocate memory! Exiting immediately!\n");
          exit(-1);
     }


     xdata = &service_extra_data_list[services_num];
     init_extra_data(xdata, service->mod_name);
     if (service->mod_init_service)
          service->mod_init_service(xdata, &CONF);

     service_list[services_num++] = service;

     cfg_table = create_service_conf_table(xdata, service->mod_conf_table);
     xdata->intl_srv_conf_table = cfg_table;

     if (cfg_table)
          register_conf_table(service->mod_name, cfg_table,
                              MAIN_TABLE);

     return service;
}
Example #3
0
void *my_malloc(size_t size, char *file, int line){
  byte *ptr;
  init_extra_data();

  size+=2*EXTRA_BYTE;
  ptr = malloc(size);

  if(get_verbose_level()>=DEBUG)
    printf("my_malloc of size %ld: %p (%s: %d)\n",size-2*EXTRA_BYTE,(void*)ptr,file,line);

  save_size(ptr,size);

  memcpy(ptr, extra_data, EXTRA_BYTE);
  memcpy(ptr + size - EXTRA_BYTE, extra_data, EXTRA_BYTE);


  if(get_verbose_level()>=DEBUG)
    printf("my_malloc returning: %p\n",(void*)(ptr+EXTRA_BYTE));

  return (void *)(ptr + EXTRA_BYTE);
}
Example #4
0
void *tm_calloc(size_t count, size_t size, char *file, int line){
  byte *ptr;
  size_t full_size;

  init_extra_data();

  full_size = count * size + 2 * EXTRA_BYTE;

  ptr = malloc(full_size);
  bzero(ptr,full_size);
  save_ptr(ptr, full_size, file, line);

  if(tm_get_verbose_level()>=DEBUG)
    printf("tm_calloc of size %ld: %p (%s: %d)\n",full_size-2*EXTRA_BYTE,ptr, file, line);


  memcpy(ptr, extra_data, EXTRA_BYTE);
  memcpy(ptr + full_size - EXTRA_BYTE, extra_data, EXTRA_BYTE);

  if(tm_get_verbose_level()>=DEBUG)
    printf("tm_calloc returning: %p\n",ptr+EXTRA_BYTE);

  return (void *)(ptr+EXTRA_BYTE);
}