From 9a3358220449e75966bb188f2dc49310107b676d Mon Sep 17 00:00:00 2001 From: s_nakamoto Date: Sun, 28 Feb 2010 15:00:32 +0000 Subject: [PATCH] fix unsafe string handling in wxGetTranslation --- makefile.vc | 18 +++++++++--------- serialize.h | 2 +- util.cpp | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/makefile.vc b/makefile.vc index 41f13522..9f821771 100644 --- a/makefile.vc +++ b/makefile.vc @@ -36,7 +36,7 @@ all: bitcoin.exe .cpp{obj}.obj: - cl $(CFLAGS) /Fo$@ %s + cl $(CFLAGS) /Fo$@ %s obj\util.obj: $(HEADERS) @@ -59,10 +59,10 @@ obj\ui.obj: $(HEADERS) obj\uibase.obj: $(HEADERS) obj\sha.obj: sha.cpp sha.h - cl $(CFLAGS) /O2 /Fo$@ %s + cl $(CFLAGS) /O2 /Fo$@ %s obj\ui.res: ui.rc rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp - rc $(INCLUDEPATHS) $(WXDEFS) /Fo$@ %s + rc $(INCLUDEPATHS) $(WXDEFS) /Fo$@ %s OBJS= \ obj\util.obj \ @@ -75,11 +75,11 @@ OBJS= \ obj\init.obj bitcoin.exe: $(OBJS) obj\ui.obj obj\uibase.obj obj\sha.obj obj\ui.res - link /nologo /DEBUG /SUBSYSTEM:WINDOWS /OUT:$@ $(LIBPATHS) $** $(LIBS) + link /nologo /DEBUG /SUBSYSTEM:WINDOWS /OUT:$@ $(LIBPATHS) $** $(LIBS) .cpp{obj\nogui}.obj: - cl $(CFLAGS) /DwxUSE_GUI=0 /Fo$@ %s + cl $(CFLAGS) /DwxUSE_GUI=0 /Fo$@ %s obj\nogui\util.obj: $(HEADERS) @@ -98,10 +98,10 @@ obj\nogui\rpc.obj: $(HEADERS) obj\nogui\init.obj: $(HEADERS) bitcoind.exe: $(OBJS:obj\=obj\nogui\) obj\sha.obj obj\ui.res - link /nologo /DEBUG /OUT:$@ $(LIBPATHS) $** $(LIBS) + link /nologo /DEBUG /OUT:$@ $(LIBPATHS) $** $(LIBS) clean: - -del /Q obj\* - -del *.ilk - -del *.pdb + -del /Q obj\* + -del *.ilk + -del *.pdb diff --git a/serialize.h b/serialize.h index 5399c23d..77dfa95b 100644 --- a/serialize.h +++ b/serialize.h @@ -20,7 +20,7 @@ class CDataStream; class CAutoFile; static const int VERSION = 207; -static const char* pszSubVer = ".0"; +static const char* pszSubVer = ".1"; diff --git a/util.cpp b/util.cpp index d90cdc48..09de89b1 100644 --- a/util.cpp +++ b/util.cpp @@ -445,17 +445,17 @@ const char* wxGetTranslation(const char* pszEnglish) return (*mi).second; // wxWidgets translation - const char* pszTranslated = wxGetTranslation(wxString(pszEnglish, wxConvUTF8)).utf8_str(); + wxString strTranslated = wxGetTranslation(wxString(pszEnglish, wxConvUTF8)); // We don't cache unknown strings because caller might be passing in a // dynamic string and we would keep allocating memory for each variation. - if (strcmp(pszEnglish, pszTranslated) == 0) + if (strcmp(pszEnglish, strTranslated.utf8_str()) == 0) return pszEnglish; // Add to cache, memory doesn't need to be freed. We only cache because // we must pass back a pointer to permanently allocated memory. - char* pszCached = new char[strlen(pszTranslated)+1]; - strcpy(pszCached, pszTranslated); + char* pszCached = new char[strlen(strTranslated.utf8_str())+1]; + strcpy(pszCached, strTranslated.utf8_str()); mapCache[pszEnglish] = pszCached; return pszCached; }