Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/include/convert.h
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/include/convert.h	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/include/convert.h	(revision 38545)
@@ -13,6 +13,6 @@
 int           hh_hms                PROTO((double hh, int *hr, int *mn, double *sc));
 int           dd_dms                PROTO((double dd, int *dg, int *mn, double *sc));
-int           hms_format            PROTO((char *line, double value));
-int           dms_format            PROTO((char *line, double value));
+int           hms_format            PROTO((char *line, int length, double value));
+int           dms_format            PROTO((char *line, int length, double value));
 int           hh_hm                 PROTO((double hh, int *hr, double *mn));
 int           day_to_sec            PROTO((char *string, time_t *second));
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/HostTable.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/HostTable.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/HostTable.c	(revision 38545)
@@ -62,6 +62,7 @@
   char *filename = NULL;
 
-  ALLOCATE (filename, char, strlen(catdir) + strlen(rootname) + 2); // one slash and one EOL
-  sprintf (filename, "%s/%s", catdir, rootname);
+  int Nchar = strlen(catdir) + strlen(rootname) + 16;
+  ALLOCATE (filename, char, Nchar); // one slash and one EOL
+  snprintf (filename, Nchar, "%s/%s", catdir, rootname);
 
   FILE *f = fopen (filename, "r");
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/LoadImages.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/LoadImages.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/LoadImages.c	(revision 38545)
@@ -23,5 +23,5 @@
 
   catdir = dvo_get_catdir ();
-  sprintf (filename, "%s/Images.dat", catdir);
+  snprintf (filename, 256, "%s/Images.dat", catdir);
 
   if (lastFilename) {
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/RegionHostTable.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/RegionHostTable.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/RegionHostTable.c	(revision 38545)
@@ -64,6 +64,8 @@
   char *filename = NULL;
 
-  ALLOCATE (filename, char, strlen(catdir) + strlen(rootname) + 2); // one slash and one EOL
-  sprintf (filename, "%s/%s", catdir, rootname);
+  int Nchar = strlen(catdir) + strlen(rootname) + 16;
+
+  ALLOCATE (filename, char, Nchar); // one slash and one EOL
+  snprintf (filename, Nchar, "%s/%s", catdir, rootname);
 
   FILE *f = fopen (filename, "r");
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/convert.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/convert.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/convert.c	(revision 38545)
@@ -46,5 +46,5 @@
 }
  
-int hms_format (char *line, double value) {
+int hms_format (char *line, int length, double value) {
 
   int hr, mn;
@@ -54,10 +54,10 @@
   hr = (int) value;
   if (isnan (value))
-    sprintf (line, "xx:xx:xx.xx");
+    snprintf (line, length, "xx:xx:xx.xx");
   else {
     if (value < 0) {
-      sprintf (line, "-%02d:%02d:%05.2f", abs(hr), mn, sc);
+      snprintf (line, length, "-%02d:%02d:%05.2f", abs(hr), mn, sc);
     } else {
-      sprintf (line, "+%02d:%02d:%05.2f", hr, mn, sc);
+      snprintf (line, length, "+%02d:%02d:%05.2f", hr, mn, sc);
     }
   }      
@@ -65,5 +65,5 @@
 }
 
-int dms_format (char *line, double value) {
+int dms_format (char *line, int length, double value) {
 
   int dg, mn;
@@ -72,7 +72,7 @@
   dd_dms (value, &dg, &mn, &sc);
   if (value < 0) {
-    sprintf (line, "-%02d:%02d:%05.2f", abs(dg), mn, sc);
+    snprintf (line, length, "-%02d:%02d:%05.2f", abs(dg), mn, sc);
   } else {
-    sprintf (line, "+%02d:%02d:%05.2f", dg, mn, sc);
+    snprintf (line, length, "+%02d:%02d:%05.2f", dg, mn, sc);
   }
   return (TRUE);
@@ -134,5 +134,5 @@
   ALLOCATE (line, char, 64);
   gmt   = gmtime (&second);
-  sprintf (line, "%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+  snprintf (line, 64, "%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
   return (line);
 }
@@ -148,23 +148,23 @@
   switch (gmt[0].tm_wday) {
     case 0:
-      sprintf (line, "Sun@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+      snprintf (line, 64, "Sun@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
       break;
     case 1:
-      sprintf (line, "Mon@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+      snprintf (line, 64, "Mon@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
       break;
     case 2:
-      sprintf (line, "Tue@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+      snprintf (line, 64, "Tue@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
       break;
     case 3:
-      sprintf (line, "Wed@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+      snprintf (line, 64, "Wed@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
       break;
     case 4:
-      sprintf (line, "Thu@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+      snprintf (line, 64, "Thu@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
       break;
     case 5:
-      sprintf (line, "Fri@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+      snprintf (line, 64, "Fri@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
       break;
     case 6:
-      sprintf (line, "Sat@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
+      snprintf (line, 64, "Sat@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec); 
       break;
   }
@@ -195,5 +195,5 @@
   hh_hm (deg, &hr, &mn);
 
-  sprintf (line, "%03d:%04.1f", abs(hr), mn);
+  snprintf (line, 16, "%03d:%04.1f", abs(hr), mn);
   return (line);
 }
@@ -209,5 +209,5 @@
   hh_hm (deg/15.0, &hr, &mn);
 
-  sprintf (line, "%02d:%04.1f", abs(hr), mn);
+  snprintf (line, 16, "%02d:%04.1f", abs(hr), mn);
   return (line);
 }
@@ -224,7 +224,7 @@
 
   if (deg < 0) {
-    sprintf (line, "-%02d:%04.1f", abs(hr), mn);
+    snprintf (line, 16, "-%02d:%04.1f", abs(hr), mn);
   } else {
-    sprintf (line, "+%02d:%04.1f", hr, mn);
+    snprintf (line, 16, "+%02d:%04.1f", hr, mn);
   }      
   return (line);
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/coordops.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/coordops.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/coordops.c	(revision 38545)
@@ -740,5 +740,5 @@
 	for (i = 0; i < 14; i++) {
 	  char name[64];
-	  sprintf (name, "PV2_%d", i);
+	  snprintf (name, 64, "PV2_%d", i);
 	  if (i < 7) {
 	    found = gfits_scan (header, name, "%f", 1, &coords[0].polyterms[0][i]);
@@ -834,5 +834,5 @@
     if (!strncmp (coords[0].ctype, "SLAT", 4)) strcpy (csys, "SLON");
     if (!strcmp (csys, "NONE")) return (FALSE);
-    sprintf (ctype, "%s-%s", csys, &coords[0].ctype[5]);
+    snprintf (ctype, 16, "%s-%s", csys, &coords[0].ctype[5]);
     gfits_modify (header, "CTYPE1",   "%s",  1, ctype);
   }    
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_catalog_create.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_catalog_create.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_catalog_create.c	(revision 38545)
@@ -105,5 +105,6 @@
   char *path = pathname (catalog[0].filename);
   char *root = filerootname (catalog[0].filename);
-  int length = strlen(path) + strlen(root) + 6;
+
+  int length = strlen(path) + strlen(root) + 16;
     
   Catalog *subcat;
@@ -120,5 +121,5 @@
   ALLOCATE (subcat->filename, char, length);
 
-  sprintf (subcat->filename, "%s/%s.%s", path, root, ext);
+  snprintf (subcat->filename, length, "%s/%s.%s", path, root, ext);
 
   char *file = filebasename (subcat->filename);
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_image.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_image.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_image.c	(revision 38545)
@@ -231,5 +231,5 @@
 int dvo_image_createID (Header *header) {
   
-  char dbID[33];
+  char dbID[64];
 
   if (!header->buffer) return FALSE;
@@ -259,5 +259,5 @@
   int i;
   for (i = 0; i < 32; i++) {
-    sprintf (&dbID[i], "%1x", (int)(16.0*drand48()));
+    myAssert (snprintf (&dbID[i], 2, "%1x", (int)(16.0*drand48())) < 2, "overflow");
   }
 
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_util.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_util.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/dvo_util.c	(revision 38545)
@@ -63,5 +63,5 @@
     }
 
-    sprintf (dvoConfig->photcodeFile, "%s/Photcodes.dat", dvoConfig->catdir);
+    snprintf (dvoConfig->photcodeFile, 256, "%s/Photcodes.dat", dvoConfig->catdir);
     if (!LoadPhotcodes (dvoConfig->photcodeFile, MasterPhotcodeFile, FALSE)) {
         fprintf (stderr, "error loading photcode table %s or master file %s\n",
@@ -101,5 +101,5 @@
     char filename[256];
   
-    sprintf (filename, "%s/Images.dat", dvoConfig->catdir);
+    snprintf (filename, 256, "%s/Images.dat", dvoConfig->catdir);
 
     gfits_db_init (&dvoConfig->imageDB);
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skydb.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skydb.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skydb.c	(revision 38545)
@@ -224,5 +224,5 @@
   /* north dec bands */
   for (dec = 0; dec < 90; dec += 7.5) {
-    sprintf (db[N].name, "n%04d.cpt", (int) 100*dec);
+    myAssert (snprintf (db[N].name, 18, "n%04d.cpt", (int) 100*dec) < 18, "overflow");
     db[N].Rmin =   0; db[N].Rmax = 360;
     db[N].Dmin = dec; db[N].Dmax = dec + 7.5;
@@ -233,5 +233,5 @@
   /* south dec bands */
   for (dec = 0; dec > -90; dec -= 7.5) {
-    sprintf (db[N].name, "s%04d.cpt", (int) 100*dec);
+    myAssert (snprintf (db[N].name, 18, "s%04d.cpt", (int) 100*dec) < 18, "overflow");
     db[N].Rmin =   0;       db[N].Rmax = 360;
     db[N].Dmin = dec - 7.5; db[N].Dmax = dec;
@@ -276,5 +276,5 @@
       new[Nnew].child = FALSE;
       strncpy (root, db[i].name, 5); root[5] = 0;
-      sprintf (new[Nnew].name, "%s/r%04d.cpt", root, Rnumber);
+      myAssert (snprintf (new[Nnew].name, 18, "%s/r%04d.cpt", root, Rnumber) < 18, "overflow");
       Rnumber ++;      
       Nnew ++;
@@ -365,5 +365,5 @@
 	db[N].child = FALSE;
 	strncpy (root, db[i].name, 10); root[10] = 0;
-	sprintf (db[N].name, "%s.%02d.cpt", root, Rnumber);
+	myAssert (snprintf (db[N].name, 18, "%s.%02d.cpt", root, Rnumber) < 18, "overflow");
 	Rnumber ++;
 	N ++;
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skyregion_gsc.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skyregion_gsc.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skyregion_gsc.c	(revision 38545)
@@ -225,5 +225,5 @@
 
     temp[5] = 0;
-    sprintf (name, "%s/%s", DecName, &temp[1]);
+    snprintf (name, 80, "%s/%s", DecName, &temp[1]);
     strcpy (regions[i].name, name);
   }
@@ -366,5 +366,5 @@
 	band[0].regions[Nregions + i].Dmax = -86.250;
       }
-      sprintf (band[0].regions[Nregions + i].name, "%s.%d", basename, i);
+      myAssert (snprintf (band[0].regions[Nregions + i].name, 18, "%s.%d", basename, i) < 18, "overflow");
     }
     band[0].regions[Nregions + i].Rmin = 0.0;
@@ -377,5 +377,5 @@
       band[0].regions[Nregions + i].Dmax = -88.125;
     }
-    sprintf (band[0].regions[Nregions + i].name, "%s.%d", basename, i);
+    myAssert (snprintf (band[0].regions[Nregions + i].name, 18, "%s.%d", basename, i) < 18, "overflow");
 
     zones[0].Nset = 6;
@@ -436,5 +436,5 @@
     }
     *p = 0;
-    sprintf (name, "%s/z%03d", band[0].regions[Ns].name, Nr);
+    myAssert (snprintf (name, 80, "%s/z%03d", band[0].regions[Ns].name, Nr) < 80, "overflow");
     *p = '/';
     strcpy (L2[0].regions[Nr].name, name);
@@ -532,5 +532,5 @@
       L4[0].regions[Nr].backupID  = 0;
 
-      sprintf (name, "%s.%02d", L3[0].name, Nbox);
+      myAssert (snprintf (name, 80, "%s.%02d", L3[0].name, Nbox) < 80, "overflow");
       strcpy (L4[0].regions[Nr].name, name);
       if (DEBUG >= 4) SkyRegionPrint (&L4[0].regions[Nr]);
Index: /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skyregion_io.c
===================================================================
--- /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skyregion_io.c	(revision 38544)
+++ /branches/eam_branches/ipp-20150616/Ohana/src/libdvo/src/skyregion_io.c	(revision 38545)
@@ -201,5 +201,5 @@
   // this generates the names, be sure to free when not needed
   for (i = 0; i < list[0].Nregions; i++) {
-    sprintf (line, "%s/%s.%s", path, list[0].regions[i][0].name, ext);
+    snprintf (line, 256, "%s/%s.%s", path, list[0].regions[i][0].name, ext);
     list[0].filename[i] = strcreate (line);
   }
@@ -215,5 +215,5 @@
   // this generates the names, be sure to free when not needed
   for (i = 0; i < sky[0].Nregions; i++) {
-    sprintf (line, "%s/%s.%s", path, sky[0].regions[i].name, ext);
+    snprintf (line, 256, "%s/%s.%s", path, sky[0].regions[i].name, ext);
     sky[0].filename[i] = strcreate (line);
   }
@@ -228,6 +228,8 @@
   
   char *skyfile;
-  ALLOCATE (skyfile, char, strlen(catdir) + strlen("/SkyTable.fits") + 1);
-  sprintf (skyfile, "%s/SkyTable.fits", catdir);
+
+  int Nchar = strlen(catdir) + strlen("/SkyTable.fits") + 16;
+  ALLOCATE (skyfile, char, Nchar);
+  snprintf (skyfile, Nchar, "%s/SkyTable.fits", catdir);
 
   return skyfile;
