--- maelstrom-1.4.3-L3.0.6.orig/maclib/Mac_Resource.cpp
+++ maelstrom-1.4.3-L3.0.6/maclib/Mac_Resource.cpp
@@ -189,12 +189,12 @@
 
 	/* Separate the Mac name from a UNIX path */
 	filename = new char[strlen(*original)+1];
-	strcpy(filename, *original);
+	strncpy(filename, *original, strlen(*original)+1);
 	if ( (basename=strrchr(filename, '/')) != NULL ) {
 		dirname = filename;
 		*(basename++) = '\0';
 	} else {
-		dirname = "";
+		dirname = (char*)"";
 		basename = filename;
 	}
 
@@ -208,8 +208,8 @@
 
 		/* First look for Executor (tm) resource forks */
 		newname = new char[strlen(dirname)+2+1+strlen(basename)+1];
-		sprintf(newname, "%s%s%%%s", dirname, (*dirname ? "/" : ""),
-								basename);
+		snprintf(newname, (strlen(dirname)+2+1+strlen(basename)+1),
+			 "%s%s%%%s", dirname, (*dirname ? "/" : ""), basename);
 		if ( (resfile=fopen(newname, "rb")) != NULL ) {
 			break;
 		}
@@ -217,8 +217,8 @@
 
 		/* Look for MacBinary files */
 		newname = new char[strlen(dirname)+2+strlen(basename)+4+1];
-		sprintf(newname, "%s%s%s.bin", dirname, (*dirname ? "/" : ""),
-								basename);
+		snprintf(newname, (strlen(dirname)+2+strlen(basename)+4+1), 
+			 "%s%s%s.bin", dirname, (*dirname ? "/" : ""), basename);
 		if ( (resfile=fopen(newname, "rb")) != NULL ) {
 			break;
 		}
@@ -226,8 +226,8 @@
 
 		/* Look for raw resource fork.. */
 		newname = new char[strlen(dirname)+2+strlen(basename)+1];
-		sprintf(newname, "%s%s%s", dirname, (*dirname ? "/" : ""),
-								basename);
+		snprintf(newname, (strlen(dirname)+2+strlen(basename)+1), 
+			 "%s%s%s", dirname, (*dirname ? "/" : ""), basename);
 		if ( (resfile=fopen(newname, "rb")) != NULL ) {
 			break;
 		}
@@ -268,7 +268,7 @@
 	/* Try to open the Macintosh resource fork */
 	errstr = NULL;
 	if ( (filep=Open_MacRes(&filename, &base)) == NULL ) {
-		error("Couldn't open resource file '%s'", filename);
+		error((char*)"Couldn't open resource file '%s'", filename);
 		return;
 	} else {
 		/* Open_MacRes() passes back the real name of resource file */
@@ -277,7 +277,7 @@
 	fseek(filep, base, SEEK_SET);
 
 	if ( ! fread(&Header, sizeof(Header), 1, filep) ) {
-		error("Couldn't read resource info from '%s'", filename);
+		error((char*)"Couldn't read resource info from '%s'", filename);
 		return;
 	}
 	bytesex32(Header.res_length);
@@ -288,7 +288,7 @@
 
 	fseek(filep, base+Header.map_offset, SEEK_SET);
 	if ( ! fread(&Map, sizeof(Map), 1, filep) ) {
-		error("Couldn't read resource info from '%s'", filename);
+		error((char*)"Couldn't read resource info from '%s'", filename);
 		return;
 	}
 	bytesex16(Map.types_offset);
@@ -306,7 +306,7 @@
 	fseek(filep, base+Header.map_offset+Map.types_offset+2, SEEK_SET);
 	for ( i=0; i<num_types; ++i ) {
 		if ( ! fread(&type_ent, sizeof(type_ent), 1, filep) ) {
-			error("Couldn't read resource info from '%s'",
+			error((char*)"Couldn't read resource info from '%s'",
 								filename);
 			delete[] ref_offsets;
 			return;
@@ -332,7 +332,7 @@
 								SEEK_SET);
 		for ( n=0; n<Resources[i].count; ++n ) {
 			if ( ! fread(&ref_ent, sizeof(ref_ent), 1, filep) ) {
-				error("Couldn't read resource info from '%s'",
+				error((char*)"Couldn't read resource info from '%s'",
 								filename);
 				delete[] ref_offsets;
 				return;
@@ -434,7 +434,7 @@
 			return(ids);
 		}
 	}
-	error("Couldn't find resources of type '%s'", res_type);
+	error((char*)"Couldn't find resources of type '%s'", res_type);
 	return(NULL);
 }
 
@@ -451,7 +451,7 @@
 			}
 		}
 	}
-	error("Couldn't find resource of type '%s', id %hu", res_type, id);
+	error((char*)"Couldn't find resource of type '%s', id %hu", res_type, id);
 	return(NULL);
 }
 
@@ -478,7 +478,7 @@
 					d->data = new Uint8[d->length];
 					if (!fread(d->data,d->length,1,filep)) {
 						delete[] d->data;
-						error("Couldn't read %d bytes", d->length);
+						error((char*)"Couldn't read %d bytes", d->length);
 						delete d;
 						return(NULL);
 					}
@@ -488,7 +488,7 @@
 			}
 		}
 	}
-	error("Couldn't find resource of type '%s', id %hu", res_type, id);
+	error((char*)"Couldn't find resource of type '%s', id %hu", res_type, id);
 	return(NULL);
 }
 
@@ -515,7 +515,7 @@
 					d->data = new Uint8[d->length];
 					if (!fread(d->data,d->length,1,filep)) {
 						delete[] d->data;
-						error("Couldn't read %d bytes", d->length);
+						error((char*)"Couldn't read %d bytes", d->length);
 						delete d;
 						return(NULL);
 					}
@@ -525,7 +525,7 @@
 			}
 		}
 	}
-	error("Couldn't find resource of type '%s', name %s", res_type, name);
+	error((char*)"Couldn't find resource of type '%s', name %s", res_type, name);
 	return(NULL);
 }
 
