IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 39394 for trunk


Ignore:
Timestamp:
Feb 26, 2016, 6:19:43 AM (10 years ago)
Author:
eugene
Message:

trying to catch some (possible) stack and heap overflow errors: adding padding to allocated config regions

Location:
trunk/Ohana/src/libfits
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libfits/header/F_read_H.c

    r38989 r39394  
    2929  header[0].datasize = 0;
    3030  done = FALSE;
    31   ALLOCATE (header[0].buffer, char, 1);
     31  ALLOCATE (header[0].buffer, char, FT_RECORD_SIZE);
    3232
    3333  for (i = 0; !done; i++) {
  • trunk/Ohana/src/libfits/include/gfitsio.h

    r39270 r39394  
    286286int gfits_dump_cmp_table (FTable *table, char *message);
    287287
     288void myMemset (char *ptr, int value, size_t N);
    288289
    289290#endif /* FITSIO */
  • trunk/Ohana/src/libfits/table/F_set_column.c

    r39324 r39394  
    22# include <gfitsio.h>
    33# define OHANA_MEMCHECK 0
     4# define CHECK_MEMBLOCKS 0
    45
    56# define SWAP_NONE
     
    4546# endif
    4647
     48  memset (tlabel,  0, 256);
     49  memset (field,   0, 256);
     50  memset (format,  0, 256);
     51  memset (type,    0, 64);
     52  memset (tmpline, 0, 64);
     53
    4754  if (label == (char *) NULL) return (FALSE);
    4855  if (label[0] == 0) return (FALSE);
     
    95102  }
    96103
     104  // ohana_memcheck (TRUE);
     105
    97106  /* make duplicate of data with correct type
    98107     byte swap and Bzero/Bscale */
    99108  ALLOCATE (array, char, Nbytes*Nval*Nrow);
     109  if (CHECK_MEMBLOCKS) {
     110    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
     111    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
     112    if (!ref->nextBlock && !ref->prevBlock) abort();
     113  }
     114
    100115  Pin = data;
    101116  Pout = array;
     117
     118  // ohana_memcheck (TRUE);
     119
     120  if (CHECK_MEMBLOCKS) {
     121    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
     122    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
     123    if (!ref->nextBlock && !ref->prevBlock) abort();
     124  }
    102125
    103126  // does it makes sense to scale 'char' data?
     
    187210  }
    188211
     212  if (CHECK_MEMBLOCKS) {
     213    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
     214    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
     215    if (!ref->nextBlock && !ref->prevBlock) abort();
     216  }
     217
    189218  /* check array space */
    190219  if (Nx*Ny < Nx*(Nrow - 1) + Nstart + Nval*Nbytes) {
     
    193222  }
    194223
     224  // ohana_memcheck (TRUE);
    195225  /* insert bytes from array into appropriate section of buffer */
    196226  Pout = table[0].buffer + Nstart;
     
    206236  myAssert (   type[63]  == 0x7f, "oops");
    207237  myAssert (tmpline[63]  == 0x7f, "oops");
    208 
    209  ohana_memcheck (TRUE);
    210 # endif
     238# endif
     239  // ohana_memcheck (TRUE);
     240
     241  if (CHECK_MEMBLOCKS) {
     242    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
     243    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
     244    if (!ref->nextBlock && !ref->prevBlock) abort();
     245  }
    211246
    212247  free (array);
  • trunk/Ohana/src/libfits/table/F_table_format.c

    r38553 r39394  
    115115  // XXXX : check usage:
    116116  myAbort ("need to check length");
    117   sprintf (format, "%%-%s%c", Size, Type);
     117  // sprintf (format, "%%-%s%c", Size, Type);
    118118
    119119  return (TRUE);
  • trunk/Ohana/src/libfits/table/F_table_row.c

    r38441 r39394  
    3131 
    3232  memcpy (&table[0].buffer[Nstart], data, Nbytes*Nrow);
    33   memset (&table[0].buffer[Nx*Ny], ' ', nbytes - Nx*Ny);
     33  myMemset (&table[0].buffer[Nx*Ny], ' ', nbytes - Nx*Ny);
    3434  return (TRUE);
    3535}
Note: See TracChangeset for help on using the changeset viewer.