Changeset 09ed91


Ignore:
Timestamp:
Jan 31, 2010, 2:41:10 PM (16 years ago)
Author:
Frederik Heber <heber@…>
Children:
961e9c
Parents:
1c7aed
git-author:
Frederik Heber <heber@…> (01/31/10 14:40:01)
git-committer:
Frederik Heber <heber@…> (01/31/10 14:41:10)
Message:

BUGFIX: NanoCreator - filename and stage were used in a very memory unsafe manner.

  • filename and stage are not malloc'd to size of respective argument which are henceforth copied into.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • util/src/NanoCreator.c

    r1c7aed r09ed91  
    672672  double *x = NULL, *coord = NULL, *tempvector = NULL, *offset = NULL;
    673673  //double *cog = NULL, *cog_projected = NULL;
    674   char stage[6];
     674  char *stage = NULL;
    675675  int axis[NDIM] = {0,1,2}, chiral[2] = {1,1}, factors[NDIM] = {1,1,1};
    676676  char name[255], line[255], input = 'n';
     
    688688        } else {
    689689                // store variables
    690                 filename = argv[1];
    691                 strncpy(stage, argv[2], 5);
     690                filename = Malloc(sizeof(char)*(strlen(argv[1])+1), "Main: filename");
     691    stage = Malloc(sizeof(char)*(strlen(argv[2])+1), "Main: stage");
     692                strcpy(filename, argv[1]);
     693                strcpy(stage, argv[2]);
    692694    fprintf(stdout, "I will begin at stage %s.\n", stage);
    693695
    694696                // build filenames
     697    length = strlen(filename);
    695698    char *ptr = strrchr(filename, '.');
    696699    if (ptr == NULL) {
    697700      ptr = filename;
    698701    } else {
    699       length = strlen(filename);
    700702      if (ptr != NULL) {
    701703        length = ((int)(ptr-filename) >= length-5) ? (int)(ptr-filename) : length;
     
    15371539  if (TubeBuffer != NULL) Free(TubeBuffer, "Main: end of stages - TubeBuffer");
    15381540
    1539   Free(CellFilename, "Main: end of stafes - CellFilename");
    1540   Free(SheetFilename, "Main: end of stafes - CellFilename");
    1541   Free(TubeFilename, "Main: end of stafes - CellFilename");
    1542   Free(TorusFilename, "Main: end of stafes - CellFilename");
    1543   Free(SheetFilenameAligned, "Main: end of stafes - CellFilename");
    1544   Free(TubeFilenameAligned, "Main: end of stafes - CellFilename");
     1541  Free(CellFilename, "Main: end of stages - CellFilename");
     1542  Free(SheetFilename, "Main: end of stages - CellFilename");
     1543  Free(TubeFilename, "Main: end of stages - CellFilename");
     1544  Free(TorusFilename, "Main: end of stages - CellFilename");
     1545  Free(SheetFilenameAligned, "Main: end of stages - CellFilename");
     1546  Free(TubeFilenameAligned, "Main: end of stages - CellFilename");
     1547  Free(filename, "Main: end of stages - filename");
     1548  Free(stage, "Main: end of stages - stage");
    15451549
    15461550  // exit
Note: See TracChangeset for help on using the changeset viewer.