Title: [115964] trunk/Source/WebCore
Revision
115964
Author
[email protected]
Date
2012-05-03 05:35:29 -0700 (Thu, 03 May 2012)

Log Message

Web Inspector: crash in InspectorResourceAgent::didReceiveWebSocketFrame
https://bugs.webkit.org/show_bug.cgi?id=85394

Reviewed by Pavel Feldman.

Pass string length explicitely when creating String object from non-null-terminated
char* strings.

* inspector/InspectorResourceAgent.cpp:
(WebCore):
(WebCore::InspectorResourceAgent::didReceiveWebSocketFrame):
(WebCore::InspectorResourceAgent::didSendWebSocketFrame):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (115963 => 115964)


--- trunk/Source/WebCore/ChangeLog	2012-05-03 12:26:20 UTC (rev 115963)
+++ trunk/Source/WebCore/ChangeLog	2012-05-03 12:35:29 UTC (rev 115964)
@@ -1,3 +1,18 @@
+2012-05-03  Yury Semikhatsky  <[email protected]>
+
+        Web Inspector: crash in InspectorResourceAgent::didReceiveWebSocketFrame
+        https://bugs.webkit.org/show_bug.cgi?id=85394
+
+        Reviewed by Pavel Feldman.
+
+        Pass string length explicitely when creating String object from non-null-terminated
+        char* strings.
+
+        * inspector/InspectorResourceAgent.cpp:
+        (WebCore):
+        (WebCore::InspectorResourceAgent::didReceiveWebSocketFrame):
+        (WebCore::InspectorResourceAgent::didSendWebSocketFrame):
+
 2012-05-03  'Pavel Feldman'  <[email protected]>
 
         Not reviewed: never surround InspectorInstrumentation:: with ENABLED(INSPECTOR)

Modified: trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp (115963 => 115964)


--- trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp	2012-05-03 12:26:20 UTC (rev 115963)
+++ trunk/Source/WebCore/inspector/InspectorResourceAgent.cpp	2012-05-03 12:35:29 UTC (rev 115964)
@@ -456,23 +456,22 @@
 {
     m_frontend->webSocketClosed(IdentifiersFactory::requestId(identifier), currentTime());
 }
+
 void InspectorResourceAgent::didReceiveWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
 {
-    String payload = frame.payload;
     RefPtr<TypeBuilder::Network::WebSocketFrame> frameObject = TypeBuilder::Network::WebSocketFrame::create()
         .setOpcode(frame.opCode)
         .setMask(frame.masked)
-        .setPayloadData(payload.substring(0, frame.payloadLength));
+        .setPayloadData(String(frame.payload, frame.payloadLength));
     m_frontend->webSocketFrameReceived(IdentifiersFactory::requestId(identifier), currentTime(), frameObject);
 }
 
 void InspectorResourceAgent::didSendWebSocketFrame(unsigned long identifier, const WebSocketFrame& frame)
 {
-    String payload = frame.payload;
     RefPtr<TypeBuilder::Network::WebSocketFrame> frameObject = TypeBuilder::Network::WebSocketFrame::create()
         .setOpcode(frame.opCode)
         .setMask(frame.masked)
-        .setPayloadData(payload.substring(0, frame.payloadLength));
+        .setPayloadData(String(frame.payload, frame.payloadLength));
     m_frontend->webSocketFrameSent(IdentifiersFactory::requestId(identifier), currentTime(), frameObject);
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to