]> git.ipfire.org Git - thirdparty/krb5.git/commitdiff
Handle missing autocomplete object gracefully
authorKevin Wasserman <kevin.wasserman@painless-security.com>
Fri, 27 Jul 2012 01:08:14 +0000 (21:08 -0400)
committerTom Yu <tlyu@mit.edu>
Wed, 29 Aug 2012 20:28:20 +0000 (16:28 -0400)
Don't crash if we can't create a CLSID_AutoComplete instance.

Signed-off-by: Kevin Wasserman <kevin.wasserman@painless-security.com>
(cherry picked from commit c6753181c2e59316c40fe0f6d1a55df542401c51)

ticket: 7321
status: resolved

src/windows/leashdll/lshutil.cpp

index 32dab585b50315bbe9fde51990f716b7793df9f3..37c0723f3b2e414140dee3369895162726da775c 100644 (file)
@@ -440,7 +440,8 @@ protected:
                 }
                 // add the new one
                 m_enumString->AddString(princStr);
-                m_acdd->ResetEnumerator();
+                if (m_acdd != NULL)
+                    m_acdd->ResetEnumerator();
                 m_princStr = princStr;
             }
         }
@@ -524,25 +525,25 @@ protected:
         IAutoComplete *pac = NULL;
         hRes = CoCreateInstance(CLSID_AutoComplete, NULL, CLSCTX_INPROC_SERVER,
                                 IID_PPV_ARGS(&pac));
-        // @TODO: error handling
+        if (pac != NULL) {
+            pac->Init(m_hwnd, pEnumString, NULL, NULL);
 
-        pac->Init(m_hwnd, pEnumString, NULL, NULL);
-
-        IAutoCompleteDropDown* pacdd = NULL;
-        hRes = pac->QueryInterface(IID_IAutoCompleteDropDown, (LPVOID*)&pacdd);
-        pac->Release();
+            IAutoCompleteDropDown* pacdd = NULL;
+            hRes = pac->QueryInterface(IID_IAutoCompleteDropDown, (LPVOID*)&pacdd);
+            pac->Release();
 
         // @TODO: auto-suggest; other advanced options?
 #if 0
-        IAutoComplete2 *pac2;
+            IAutoComplete2 *pac2;
 
-        if (SUCCEEDED(pac->QueryInterface(IID_IAutoComplete2, (LPVOID*)&pac2)))
-        {
-            pac2->SetOptions(ACO_AUTOSUGGEST);
-            pac2->Release();
-        }
+            if (SUCCEEDED(pac->QueryInterface(IID_IAutoComplete2,
+                                              (LPVOID*)&pac2))) {
+                pac2->SetOptions(ACO_AUTOSUGGEST);
+                pac2->Release();
+            }
 #endif
-        m_acdd = pacdd;
+            m_acdd = pacdd;
+        }
     }
 
     void DestroyAutocomplete()