Index: /trunk/Config.kmk
===================================================================
--- /trunk/Config.kmk	(revision 73504)
+++ /trunk/Config.kmk	(revision 73505)
@@ -2759,9 +2759,13 @@
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-missing-field-initializers ?= $(call VBOX_GCC_CHECK_CC,-Wno-missing-field-initializers,)'
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-pointer-to-int-cast        ?= $(call VBOX_GCC_CHECK_CC,-Wno-pointer-to-int-cast,)'
-	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-variadic-macros   ?= $(call VBOX_GCC_CHECK_CXX,-Wno-variadic-macros,)'
-	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-vla               ?= $(call VBOX_GCC_CHECK_CXX,-Wno-vla,)'
-	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-overlength-strings?= $(call VBOX_GCC_CHECK_CC,-Wno-overlength-strings,)'
-	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-overloaded-virtual?= $(call VBOX_GCC_CHECK_CXX,-Wno-overloaded-virtual,)'
-	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-ignored-qualifiers?= $(call VBOX_GCC_CHECK_CXX,-Wno-ignored-qualifiers,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-variadic-macros            ?= $(call VBOX_GCC_CHECK_CXX,-Wno-variadic-macros,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-vla                        ?= $(call VBOX_GCC_CHECK_CXX,-Wno-vla,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-overlength-strings         ?= $(call VBOX_GCC_CHECK_CC,-Wno-overlength-strings,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-overloaded-virtual         ?= $(call VBOX_GCC_CHECK_CXX,-Wno-overloaded-virtual,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-ignored-qualifiers         ?= $(call VBOX_GCC_CHECK_CXX,-Wno-ignored-qualifiers,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-multistatement-macros      ?= $(call VBOX_GCC_CHECK_CXX,-Wno-multistatement-macros,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-class-memaccess            ?= $(call VBOX_GCC_CHECK_CXX,-Wno-class-memaccess,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-stringop-overflow          ?= $(call VBOX_GCC_CHECK_CXX,-Wno-stringop-overflow,)'
+	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_Wno-stringop-truncation        ?= $(call VBOX_GCC_CHECK_CXX,-Wno-stringop-truncation,)'
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_fno-stack-protector   ?= $(call VBOX_GCC_CHECK_CC,-fno-stack-protector,)'
 	$(QUIET)$(APPEND) '$@' 'VBOX_GCC_fno-dwarf2-cfi-asm    ?= $(call VBOX_GCC_CHECK_CC,-fno-dwarf2-cfi-asm,)'
@@ -5699,5 +5703,5 @@
 TEMPLATE_VBOXMAINEXE_TOOL                = $(VBOX_GCC_TOOL)
 TEMPLATE_VBOXMAINEXE_CXXFLAGS            = -g $(VBOX_GCC_pipe) \
-	$(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) -Wshadow \
+	$(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) $(VBOX_GCC_Wno-multistatement-macros) $(VBOX_GCC_Wno-class-memaccess) -Wshadow \
 	-fshort-wchar -fpermissive -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \
 	$(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK)
Index: /trunk/src/VBox/Main/cbinding/tstCAPIGlue.c
===================================================================
--- /trunk/src/VBox/Main/cbinding/tstCAPIGlue.c	(revision 73504)
+++ /trunk/src/VBox/Main/cbinding/tstCAPIGlue.c	(revision 73505)
@@ -103,4 +103,5 @@
  * @param  iInfo    Platform dependent detail info (ignored).
  */
+#ifdef WIN32
 static BOOL VBOX_WINAPI ctrlCHandler(DWORD iInfo)
 {
@@ -109,4 +110,11 @@
     return TRUE;
 }
+#else
+static void ctrlCHandler(int iInfo)
+{
+    (void)iInfo;
+    g_fStop = 1;
+}
+#endif
 
 /**
@@ -605,5 +613,5 @@
                     SetConsoleCtrlHandler(ctrlCHandler, TRUE);
 #else
-                    signal(SIGINT, (void (*)(int))ctrlCHandler);
+                    signal(SIGINT, ctrlCHandler);
 #endif
 
Index: /trunk/src/VBox/Main/glue/errorprint.cpp
===================================================================
--- /trunk/src/VBox/Main/glue/errorprint.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/glue/errorprint.cpp	(revision 73505)
@@ -81,5 +81,5 @@
         Log(("ERROR: %s", str.c_str()));
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         RTMsgError("std::bad_alloc in GluePrintErrorInfo!");
Index: /trunk/src/VBox/Main/src-all/ExtPackUtil.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/ExtPackUtil.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-all/ExtPackUtil.cpp	(revision 73505)
@@ -272,7 +272,7 @@
             Parser.read(szFilePath, Doc);
         }
-        catch (xml::XmlError Err)
-        {
-            return new RTCString(Err.what());
+        catch (xml::XmlError &rErr)
+        {
+            return new RTCString(rErr.what());
         }
     }
@@ -345,7 +345,7 @@
             Parser.read(pvFile, cbFile, strFileName, Doc);
         }
-        catch (xml::XmlError Err)
-        {
-            pstrErr = new RTCString(Err.what());
+        catch (xml::XmlError &rErr)
+        {
+            pstrErr = new RTCString(rErr.what());
             rc = VERR_PARSE_ERROR;
         }
@@ -862,5 +862,5 @@
                     *pStrDigest = szCalculatedDigest;
                 }
-                catch (std::bad_alloc)
+                catch (std::bad_alloc &)
                 {
                     rc = VERR_NO_MEMORY;
Index: /trunk/src/VBox/Main/src-all/SecretKeyStore.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/SecretKeyStore.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-all/SecretKeyStore.cpp	(revision 73505)
@@ -147,5 +147,5 @@
         return rc;
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         if (pKey)
Index: /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp	(revision 73505)
@@ -3194,5 +3194,5 @@
             result = AuthResultAccessGranted;
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
     }
@@ -3265,5 +3265,5 @@
         LogFlowFunc(("%Rhrc [%ls]\n", hr, authResult.raw())); NOREF(hr);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
     }
Index: /trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/DrvAudioVideoRec.cpp	(revision 73505)
@@ -392,5 +392,5 @@
         }
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
 #ifdef VBOX_AUDIO_DEBUG_DUMP_PCM_DATA
Index: /trunk/src/VBox/Main/src-client/GuestCtrlPrivate.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestCtrlPrivate.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/GuestCtrlPrivate.cpp	(revision 73505)
@@ -768,5 +768,5 @@
         }
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
Index: /trunk/src/VBox/Main/src-client/GuestFileImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestFileImpl.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/GuestFileImpl.cpp	(revision 73505)
@@ -368,5 +368,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -698,5 +698,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -759,5 +759,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -818,5 +818,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -879,5 +879,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -1144,5 +1144,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -1207,5 +1207,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
Index: /trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp	(revision 73505)
@@ -897,5 +897,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -1024,5 +1024,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -1236,5 +1236,5 @@
                 vrc = registerWaitEvent(eventTypes, &pEvent);
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 vrc = VERR_NO_MEMORY;
@@ -1425,5 +1425,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -1714,5 +1714,5 @@
         vrc = registerWaitEvent(eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -2224,5 +2224,5 @@
                     paStrmOutObjects->push_back(strmBlk);
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 vrc = VERR_NO_MEMORY;
Index: /trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp	(revision 73505)
@@ -700,5 +700,5 @@
         vrc = registerWaitEventEx(mData.mSession.mID, mData.mObjectID, eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -961,5 +961,5 @@
         procInfo.mArguments.push_back(strPath); /* The directory we want to create. */
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -1113,5 +1113,5 @@
         procInfo.mArguments.push_back(strTemplate);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         Log(("Out of memory!\n"));
@@ -1466,5 +1466,5 @@
         procInfo.mArguments.push_back(strPath); /* The file we want to remove. */
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -1629,5 +1629,5 @@
         procInfo.mArguments.push_back(strPath);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         Log(("Out of memory!\n"));
@@ -1923,5 +1923,5 @@
         vrc = registerWaitEventEx(mData.mSession.mID, mData.mObjectID, eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
@@ -2698,5 +2698,5 @@
         vrc = registerWaitEventEx(mData.mSession.mID, mData.mObjectID, eventTypes, &pEvent);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         vrc = VERR_NO_MEMORY;
Index: /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/MachineDebuggerImpl.cpp	(revision 73505)
@@ -664,5 +664,5 @@
                 aOSName = Utf8Str(bstrName);
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 hrc = E_OUTOFMEMORY;
@@ -695,5 +695,5 @@
                 aOSVersion = Utf8Str(bstrVersion);
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 hrc = E_OUTOFMEMORY;
@@ -1002,5 +1002,5 @@
                         aInfo = bstrInfo;
                     }
-                    catch (std::bad_alloc)
+                    catch (std::bad_alloc &)
                     {
                         hrc = E_OUTOFMEMORY;
@@ -1132,5 +1132,5 @@
                 hrc = S_OK;
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 hrc = E_OUTOFMEMORY;
@@ -1149,5 +1149,5 @@
                     hrc = S_OK;
                 }
-                catch (std::bad_alloc)
+                catch (std::bad_alloc &)
                 {
                     hrc = E_OUTOFMEMORY;
@@ -1218,5 +1218,5 @@
                 aOs = szName;
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 hrc = E_OUTOFMEMORY;
@@ -1322,5 +1322,5 @@
                     aValue = Utf8Str(bstrValue);
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 hrc = E_OUTOFMEMORY;
@@ -1381,5 +1381,5 @@
                         }
                     }
-                    catch (std::bad_alloc)
+                    catch (std::bad_alloc &)
                     {
                         hrc = E_OUTOFMEMORY;
@@ -1530,5 +1530,5 @@
                     }
                 }
-                catch (std::bad_alloc)
+                catch (std::bad_alloc &)
                 {
                     hrc = E_OUTOFMEMORY;
Index: /trunk/src/VBox/Main/src-client/VideoRec.cpp
===================================================================
--- /trunk/src/VBox/Main/src-client/VideoRec.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-client/VideoRec.cpp	(revision 73505)
@@ -710,5 +710,5 @@
             pStream->File.pWEBM = new WebMWriter();
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             rc = VERR_NO_MEMORY;
@@ -895,5 +895,5 @@
         pStream = pCtx->vecStreams.at(uScreen);
     }
-    catch (std::out_of_range)
+    catch (std::out_of_range &)
     {
         pStream = NULL;
Index: /trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp	(revision 73505)
@@ -2018,5 +2018,5 @@
             hrc = setErrorVrc(vrc, tr("Failed to open directory '%s' (%Rrc)"), strTargetDir.c_str(), vrc);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         hrc = E_OUTOFMEMORY;
@@ -2241,5 +2241,5 @@
                             strTarballPath.setNull();
                         }
-                        catch (std::bad_alloc)
+                        catch (std::bad_alloc &)
                         { hrc = E_OUTOFMEMORY; }
                     }
Index: /trunk/src/VBox/Main/src-server/CloudClientImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/CloudClientImpl.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-server/CloudClientImpl.cpp	(revision 73505)
@@ -148,5 +148,5 @@
         LogRel(("Get cought an exception %d\n", hrc));
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -303,5 +303,5 @@
         LogRel(("Get cought an exception %d\n", hrc));
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
Index: /trunk/src/VBox/Main/src-server/MediumIOImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MediumIOImpl.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-server/MediumIOImpl.cpp	(revision 73505)
@@ -245,5 +245,5 @@
         a_rData.resize(a_cbRead);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
Index: /trunk/src/VBox/Main/src-server/UnattendedImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/UnattendedImpl.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-server/UnattendedImpl.cpp	(revision 73505)
@@ -224,5 +224,5 @@
         ComAssertComRCRet(hrc, hrc);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -337,5 +337,5 @@
             mDetectedOSLanguages.append(szTmp);
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             return E_OUTOFMEMORY;
@@ -357,5 +357,5 @@
     {
         try {  mStrDetectedOSTypeId = Global::OSTypeId(enmOsType); }
-        catch (std::bad_alloc) { hrc = E_OUTOFMEMORY; }
+        catch (std::bad_alloc &) { hrc = E_OUTOFMEMORY; }
     }
     return hrc;
@@ -466,5 +466,5 @@
                         mDetectedOSLanguages.append(pszKey);
                     }
-                    catch (std::bad_alloc)
+                    catch (std::bad_alloc &)
                     {
                         RTIniFileRelease(hIniFile);
@@ -653,5 +653,5 @@
                 LogRelFlow(("Unattended: .treeinfo: version=%s\n", pBuf->sz));
                 try { mStrDetectedOSVersion = RTStrStrip(pBuf->sz); }
-                catch (std::bad_alloc) { return E_OUTOFMEMORY; }
+                catch (std::bad_alloc &) { return E_OUTOFMEMORY; }
             }
 
@@ -711,5 +711,5 @@
             LogRelFlow(("Unattended: .discinfo: version=%s\n", pszVersion));
             try { mStrDetectedOSVersion = RTStrStripL(pszVersion); }
-            catch (std::bad_alloc) { return E_OUTOFMEMORY; }
+            catch (std::bad_alloc &) { return E_OUTOFMEMORY; }
 
             /* CentOS likes to call their release 'Final' without mentioning the actual version
@@ -778,5 +778,5 @@
                         /* Set it and stop looking. */
                         try { mStrDetectedOSVersion = psz; }
-                        catch (std::bad_alloc) { return E_OUTOFMEMORY; }
+                        catch (std::bad_alloc &) { return E_OUTOFMEMORY; }
                         break;
                     }
@@ -833,5 +833,5 @@
             return setErrorBoth(E_FAIL, vrc);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -966,5 +966,5 @@
         }
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -1065,5 +1065,5 @@
             hrc = ptrSession.createInprocObject(CLSID_Session);
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             hrc = E_OUTOFMEMORY;
Index: /trunk/src/VBox/Main/src-server/UnattendedInstaller.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/UnattendedInstaller.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-server/UnattendedInstaller.cpp	(revision 73505)
@@ -466,5 +466,5 @@
                 vecArgs.append() = "--dir-mode=0555";
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 hrc = E_OUTOFMEMORY;
@@ -543,5 +543,5 @@
             pszDstFilename = strDstNameBuf.c_str();
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             return E_OUTOFMEMORY;
@@ -680,5 +680,5 @@
             }
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             hrc = E_OUTOFMEMORY;
@@ -700,5 +700,5 @@
         strScriptName.append(pEditor->getDefaultFilename());
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -719,5 +719,5 @@
             rVecFiles.append(strScriptName);
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             RTFileDelete(strScriptName.c_str());
@@ -896,5 +896,5 @@
         }
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -946,5 +946,5 @@
         rVecArgs.append().append("isolinux/txt.cfg=").append(strTxtCfg);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -968,5 +968,5 @@
                     rVecFiles.append(strIsoLinuxCfg);
                 }
-                catch (std::bad_alloc)
+                catch (std::bad_alloc &)
                 {
                     RTFileDelete(strIsoLinuxCfg.c_str());
@@ -996,5 +996,5 @@
                     rVecFiles.append(strTxtCfg);
                 }
-                catch (std::bad_alloc)
+                catch (std::bad_alloc &)
                 {
                     RTFileDelete(strTxtCfg.c_str());
@@ -1043,5 +1043,5 @@
         }
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -1112,5 +1112,5 @@
 #endif
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -1134,5 +1134,5 @@
                     rVecFiles.append(strIsoLinuxCfg);
                 }
-                catch (std::bad_alloc)
+                catch (std::bad_alloc &)
                 {
                     RTFileDelete(strIsoLinuxCfg.c_str());
Index: /trunk/src/VBox/Main/src-server/UnattendedScript.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/UnattendedScript.cpp	(revision 73504)
+++ /trunk/src/VBox/Main/src-server/UnattendedScript.cpp	(revision 73505)
@@ -139,5 +139,5 @@
             strWithDefaultFilename.append(getDefaultFilename());
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             return E_OUTOFMEMORY;
@@ -153,5 +153,5 @@
         mStrSavedPath = pszFilename;
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -245,5 +245,5 @@
                     rStrDst.append(mStrScriptFullContent, offTemplate, cchToCopy);
                 }
-                catch (std::bad_alloc)
+                catch (std::bad_alloc &)
                 {
                     hrc = E_OUTOFMEMORY;
@@ -311,5 +311,5 @@
                             rStrDst.append(strValue);
                         }
-                        catch (std::bad_alloc)
+                        catch (std::bad_alloc &)
                         {
                             hrc = E_OUTOFMEMORY;
@@ -465,5 +465,5 @@
                                     return S_OK;
                                 }
-                                catch (std::bad_alloc)
+                                catch (std::bad_alloc &)
                                 {
                                     hrc = E_OUTOFMEMORY;
@@ -499,5 +499,5 @@
         }
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         hrc = E_OUTOFMEMORY;
@@ -656,5 +656,5 @@
         mScriptContentByLines = mStrScriptFullContent.split("\n");
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         mScriptContentByLines.clear();
@@ -697,5 +697,5 @@
             rStrDst.append('\n');
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             return E_OUTOFMEMORY;
@@ -723,5 +723,5 @@
         mScriptContentByLines[idxLine] = rStrNewLine;
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -762,5 +762,5 @@
             rDstString.append(strAfter);
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             return E_OUTOFMEMORY;
@@ -780,5 +780,5 @@
         mScriptContentByLines[idxLine].append(rStrToAppend);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -802,5 +802,5 @@
         rDstString.append(strCopy);
     }
-    catch (std::bad_alloc)
+    catch (std::bad_alloc &)
     {
         return E_OUTOFMEMORY;
@@ -838,5 +838,5 @@
                 hrc = S_OK;
             }
-            catch (std::bad_alloc)
+            catch (std::bad_alloc &)
             {
                 hrc = E_OUTOFMEMORY;
@@ -864,5 +864,5 @@
             strProbableValue = createProbableValue(enmDataId, pElement);
         }
-        catch (std::bad_alloc)
+        catch (std::bad_alloc &)
         {
             return E_OUTOFMEMORY;
Index: /trunk/src/VBox/Main/webservice/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/webservice/Makefile.kmk	(revision 73504)
+++ /trunk/src/VBox/Main/webservice/Makefile.kmk	(revision 73505)
@@ -228,5 +228,5 @@
   vboxsoap_CXXFLAGS.win += -wd4702 # soapc-4.cpp(16) : warning C4702: unreachable code
   ifn1of ($(KBUILD_TARGET), win)
-   vboxsoap_CXXFLAGS += -Wno-shadow -Wno-parentheses $(VBOX_GCC_Wno-literal-suffix)
+   vboxsoap_CXXFLAGS += -Wno-shadow -Wno-parentheses $(VBOX_GCC_Wno-literal-suffix) $(VBOX_GCC_Wno-stringop-overflow) $(VBOX_GCC_Wno-stringop-truncation)
   endif
   vboxsoap_INCS := \
