[ros-diffs] [gedmurphy] 23438: size the buffer dynamically to avoid potentially overflowing it

gedmurphy at svn.reactos.org gedmurphy at svn.reactos.org
Thu Aug 3 21:06:12 CEST 2006


Author: gedmurphy
Date: Thu Aug  3 23:06:12 2006
New Revision: 23438

URL: http://svn.reactos.org/svn/reactos?rev=23438&view=rev
Log:
size the buffer dynamically to avoid potentially overflowing it

Modified:
    trunk/reactos/dll/cpl/ncpa/tcpip_properties.c

Modified: trunk/reactos/dll/cpl/ncpa/tcpip_properties.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/ncpa/tcpip_properties.c?rev=23438&r1=23437&r2=23438&view=diff
==============================================================================
--- trunk/reactos/dll/cpl/ncpa/tcpip_properties.c (original)
+++ trunk/reactos/dll/cpl/ncpa/tcpip_properties.c Thu Aug  3 23:06:12 2006
@@ -466,14 +466,25 @@
     PROPSHEETHEADERW psh;
     INITCOMMONCONTROLSEX cce;
     TCPIP_PROPERTIES_DATA DlgData;
-    TCHAR tpszCaption[MAX_PATH];
-    HWND hListBox = GetDlgItem(hParent,IDC_COMPONENTSLIST);
-    int iListBoxIndex = (int) SendMessage(hListBox,LB_GETCURSEL,0,0);
+    LPTSTR tpszCaption = NULL;
+    INT StrLen;
+
+    HWND hListBox = GetDlgItem(hParent, IDC_COMPONENTSLIST);
+    int iListBoxIndex = (int) SendMessage(hListBox, LB_GETCURSEL, 0, 0);
+
     if(iListBoxIndex != LB_ERR)
-        SendMessage(hListBox,LB_GETTEXT,iListBoxIndex,(LPARAM)tpszCaption);
-    else
-        _stprintf(tpszCaption,_T("[ERROR]"));
-    _tcscat(tpszCaption,_T(" Properties"));
+    {
+        StrLen = SendMessage(hListBox, LB_GETTEXTLEN, iListBoxIndex, 0);
+
+        if (StrLen != LB_ERR)
+        {
+            TCHAR suffix[] = _T(" Properties");
+            INT HeapSize = ((StrLen + 1) + (_tcslen(suffix) + 1)) * sizeof(TCHAR);
+            tpszCaption = (LPTSTR)HeapAlloc(GetProcessHeap(), 0, HeapSize);
+            SendMessage(hListBox, LB_GETTEXT, iListBoxIndex, (LPARAM)tpszCaption);
+            _tcscat(tpszCaption, suffix);
+        }
+    }
     
     if (! LoadDataFromInfo(&DlgData, pInfo))
     {




More information about the Ros-diffs mailing list