diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
index 82ad32d..35cf0c1 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/DefaultCxfBinding.java
@@ -394,11 +394,11 @@
         MessageContentsList answer = new MessageContentsList();
 
         int i = 0;
-        
-        for (MessagePartInfo partInfo : boi.getOutput().getMessageParts()) {
-            if (elements.size() > i) {
-                answer.put(partInfo, elements.get(i++));
-                
+        if (boi.getOutput() != null) {
+            for (MessagePartInfo partInfo : boi.getOutput().getMessageParts()) {
+                if (elements.size() > i) {
+                    answer.put(partInfo, elements.get(i++));
+                }
             }
         }
 
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java
index 8290481..76aef07 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java
@@ -44,16 +44,18 @@
         }
 
         List<?> params = message.getContent(List.class);
-        InputStream is = (InputStream)params.get(0);
-        OutputStream os = message.getContent(OutputStream.class);
+        if (null != params) {
+            InputStream is = (InputStream)params.get(0);
+            OutputStream os = message.getContent(OutputStream.class);
 
-        try {
-            IOHelper.copy(is, os);
-        } catch (Exception e) {
-            throw new Fault(e);
-        } finally {
-            IOHelper.close(is, "input stream", null);
-            // Should not close the output stream as the interceptor chain will close it
+            try {
+                IOHelper.copy(is, os);
+            } catch (Exception e) {
+                throw new Fault(e);
+            } finally {
+                IOHelper.close(is, "input stream", null);
+                // Should not close the output stream as the interceptor chain will close it
+            }
         }
     }
 }
diff --git a/parent/pom.xml b/parent/pom.xml
index 84b9f97..06f20f4 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -51,7 +51,7 @@
     <commons-collections-version>3.2.1</commons-collections-version>
     <commons-pool-version>1.5.4</commons-pool-version>
     <commons-dbcp-version>1.3</commons-dbcp-version>
-    <cxf-version>2.3.5</cxf-version>
+    <cxf-version>2.3.7</cxf-version>
     <cxf-xjc-utils-version>2.3.2</cxf-xjc-utils-version>
     <derby-version>10.4.2.0</derby-version>
     <dnsjava-version>2.1.0</dnsjava-version>
diff --git a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
index 0ba94a4..a912fd0 100644
--- a/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
+++ b/tests/camel-itest/src/test/java/org/apache/camel/itest/security/GreeterClientTest.java
@@ -91,8 +91,7 @@
             fail("should fail");
         } catch (Exception ex) {
             assertTrue("Get a wrong type exception.", ex instanceof SOAPFaultException);
-            assertTrue("Get a wrong exception message", ex.getMessage().startsWith("The security token could not be authenticated or authorized;"));
-            assertTrue("Get a wrong exception message", ex.getMessage().endsWith("java.io.IOException: Wrong password!"));
+            assertTrue("Get a wrong exception message: " + ex.getMessage(), ex.getMessage().startsWith("The security token could not be authenticated or authorized"));
         }
 
     }
