$OpenBSD: patch-src_SciTEIO_cxx,v 1.2 2007/01/18 10:56:27 steven Exp $
--- src/SciTEIO.cxx.orig	Mon Jan 15 12:02:13 2007
+++ src/SciTEIO.cxx	Mon Jan 15 12:02:56 2007
@@ -78,8 +78,7 @@ void SciTEBase::SetFileName(FilePath ope
 	if (openName.AsInternal()[0] == '\"') {
 		// openName is surrounded by double quotes
 		char pathCopy[MAX_PATH + 1];
-		strncpy(pathCopy, openName.AsInternal() + 1, MAX_PATH);
-		pathCopy[MAX_PATH] = '\0';
+		strlcpy(pathCopy, openName.AsInternal() + 1, sizeof(pathCopy));
 		if (pathCopy[strlen(pathCopy) - 1] == '\"') {
 			pathCopy[strlen(pathCopy) - 1] = '\0';
 		}
@@ -490,7 +489,7 @@ bool SciTEBase::OpenSelected() {
 	unsigned long lineNumber = 0;
 
 	SString selName = SelectionFilename();
-	strncpy(selectedFilename, selName.c_str(), MAX_PATH);
+	strlcpy(selectedFilename, selName.c_str(), sizeof(selectedFilename));
 	selectedFilename[MAX_PATH - 1] = '\0';
 	if (selectedFilename[0] == '\0') {
 		WarnUser(warnWrongFile);
@@ -498,7 +497,7 @@ bool SciTEBase::OpenSelected() {
 	}
 	SString fileNameForExtension = ExtensionFileName();
 	SString openSuffix = props.GetNewExpand("open.suffix.", fileNameForExtension.c_str());
-	strcat(selectedFilename, openSuffix.c_str());
+	strlcat(selectedFilename, openSuffix.c_str(), sizeof(selectedFilename));
 
 	if (EqualCaseInsensitive(selectedFilename, FileNameExt().AsInternal()) || EqualCaseInsensitive(selectedFilename, filePath.AsInternal())) {
 		WarnUser(warnWrongFile);
@@ -513,7 +512,7 @@ bool SciTEBase::OpenSelected() {
 		// we suppose we want to open an imported .properties file
 		// So we append the correct extension to open the included file.
 		// Maybe we should check if the filename is preceded by "import"...
-		strcat(selectedFilename, PROPERTIES_EXTENSION);
+		strlcat(selectedFilename, PROPERTIES_EXTENSION, sizeof(selectedFilename));
 	} else {
 		// Check if we have a line number (error message or grep result)
 		// A bit of duplicate work with DecodeMessage, but we don't know
@@ -1057,7 +1056,7 @@ public:
 		}
 		lineToShow[i] = '\0';
 		lineNum++;
-		strcpy(lineToCompare, lineToShow);
+		strlcpy(lineToCompare, lineToShow, sizeof(lineToCompare));
 		if (!caseSensitive) {
 			for (int j=0; j<i; j++) {
 				if (lineToCompare[j] >= 'A' && lineToCompare[j] <= 'Z') {
