openbsd-ports/x11/wxWidgets/patches/patch-src_common_db_cpp
todd b25888b419 wxWidgets 2.4.2, C++ cross-platform GUI toolkit
www: http://www.wxwidgets.org/

from Andrew Dalgleish   < openbsd at ajd dot net dot au >
many thanks for much persistence!
2004-07-16 21:01:35 +00:00

51 lines
1.6 KiB
Plaintext

$OpenBSD: patch-src_common_db_cpp,v 1.1.1.1 2004/07/16 21:01:35 todd Exp $
--- src/common/db.cpp.orig Mon Dec 16 23:56:26 2002
+++ src/common/db.cpp Sat May 3 10:59:20 2003
@@ -81,6 +81,15 @@ wxChar const *SQL_CATALOG_FILENAME =
extern wxList TablesInUse;
#endif
+FILE* fopen_create(char *path, char *mode)
+{
+ // Only open the file if it does not already exist
+ int fd = open(path, O_WRONLY | O_CREAT | O_EXCL, 0600)
+ if (fd < 0)
+ return NULL;
+ return fdopen(fd, mode);
+}
+
// SQL Log defaults to be used by GetDbConnection
wxDbSqlLogState SQLLOGstate = sqlLogOFF;
@@ -2994,7 +3003,7 @@ bool wxDb::Catalog(const wxChar *userID,
wxChar typeName[30+1];
SDWORD precision, length;
- FILE *fp = fopen(fileName.c_str(),wxT("wt"));
+ FILE *fp = fopen_create(fileName.c_str(),wxT("wt"));
if (fp == NULL)
return(FALSE);
@@ -3331,7 +3340,10 @@ bool wxDb::SetSqlLogging(wxDbSqlLogState
{
if (fpSqlLog == 0)
{
- fpSqlLog = fopen(filename, (append ? wxT("at") : wxT("wt")));
+ if (append)
+ fpSqlLog = fopen(filename, wxT("at"));
+ else
+ fpSqlLog = fopen_create(filename, wxT("wt"));
if (fpSqlLog == NULL)
return(FALSE);
}
@@ -3442,8 +3454,7 @@ wxDBMS wxDb::Dbms(void)
return(dbmsType);
wxChar baseName[25+1];
- wxStrncpy(baseName,dbInf.dbmsName,25);
- baseName[25] = 0;
+ strlcpy(baseName,dbInf.dbmsName,sizeof(baseName));
// RGG 20001025 : add support for Interbase
// GT : Integrated to base classes on 20001121