summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author(no author) <(no author)@4f64403b-2f21-0410-a795-97e2b3489a10>2011-01-04 03:18:22 +0000
committer(no author) <(no author)@4f64403b-2f21-0410-a795-97e2b3489a10>2011-01-04 03:18:22 +0000
commitffc6719a95a520a4d1b0705d48faf3734ae1e9df (patch)
tree9a8e311c37a912ef8e610b2842b249a6a51790a1
parenta523c7780ebf7145c3208735792393ddf7fba827 (diff)
Safer class registration
git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@589 4f64403b-2f21-0410-a795-97e2b3489a10
-rw-r--r--yapp/services.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/yapp/services.cpp b/yapp/services.cpp
index 2b113fa..857b814 100644
--- a/yapp/services.cpp
+++ b/yapp/services.cpp
@@ -395,7 +395,11 @@ POPUPCLASS *classes = 0;
INT_PTR RegisterPopupClass(WPARAM wParam, LPARAM lParam)
{
- POPUPCLASS *pc = (POPUPCLASS *)lParam;
+ classes = (POPUPCLASS *)mir_realloc(classes, sizeof(POPUPCLASS) * (num_classes + 1));
+ memcpy(classes + num_classes, (PVOID)lParam, sizeof(POPUPCLASS));
+ POPUPCLASS *pc = classes + num_classes;
+ num_classes++;
+
pc->pszName = mir_strdup(pc->pszName);
if(pc->flags & PCF_UNICODE)
pc->pwszDescription = mir_wstrdup(pc->pwszDescription);
@@ -411,9 +415,6 @@ INT_PTR RegisterPopupClass(WPARAM wParam, LPARAM lParam)
mir_snprintf(setting, 256, "%s/BgCol", pc->pszName);
pc->colorBack = (COLORREF)DBGetContactSettingDword(0, MODULE, setting, (DWORD)pc->colorBack);
- classes = (POPUPCLASS *)mir_realloc(classes, sizeof(POPUPCLASS) * (num_classes + 1));
- memcpy(classes + num_classes, pc, sizeof(POPUPCLASS));
- num_classes++;
return 0;
}