Index: /trunk/src/VBox/Main/include/VirtualBoxImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/VirtualBoxImpl.h	(revision 42209)
+++ /trunk/src/VBox/Main/include/VirtualBoxImpl.h	(revision 42210)
@@ -316,6 +316,6 @@
                                  bool aSaveRegistry = true);
 
-    void decryptSettings();
-    void decryptMediumSettings(Medium *pMedium);
+    int  decryptSettings();
+    int  decryptMediumSettings(Medium *pMedium);
     int  decryptSettingBytes(uint8_t *aPlaintext, const uint8_t *aCiphertext,
                              size_t aCiphertextSize) const;
Index: /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp	(revision 42209)
+++ /trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp	(revision 42210)
@@ -2041,9 +2041,9 @@
 {
     storeSettingsKey(aValue);
-    decryptSettings();
-    return S_OK;
-}
-
-void VirtualBox::decryptMediumSettings(Medium *pMedium)
+    int vrc = decryptSettings();
+    return RT_SUCCESS(vrc) ? S_OK : E_FAIL;
+}
+
+int VirtualBox::decryptMediumSettings(Medium *pMedium)
 {
     Bstr bstrCipher;
@@ -2058,5 +2058,8 @@
         if (RT_SUCCESS(rc))
             pMedium->setPropertyDirect("InitiatorSecret", strPlaintext);
-    }
+        else
+            return rc;
+    }
+    return VINF_SUCCESS;
 }
 
@@ -2069,6 +2072,7 @@
  * properties need to be null-terminated strings.
  */
-void VirtualBox::decryptSettings()
-{
+int VirtualBox::decryptSettings()
+{
+    bool fFailure = false;
     AutoReadLock al(m->allHardDisks.getLockHandle() COMMA_LOCKVAL_SRC_POS);
     for (MediaList::const_iterator mt = m->allHardDisks.begin();
@@ -2081,6 +2085,9 @@
             continue;
         AutoWriteLock mlock(pMedium COMMA_LOCKVAL_SRC_POS);
-        decryptMediumSettings(pMedium);
-    }
+        int vrc = decryptMediumSettings(pMedium);
+        if (RT_FAILURE(vrc))
+            fFailure = true;
+    }
+    return fFailure ? VERR_INVALID_PARAMETER : VINF_SUCCESS;
 }
 
