[webkit-changes] [WebKit/WebKit] ca84d4: SharedMemory::Handle should always be valid

Don Olmstead noreply at github.com
Tue Oct 10 13:29:07 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ca84d41f56be91a82968e7464eb0d1379178767f
      https://github.com/WebKit/WebKit/commit/ca84d41f56be91a82968e7464eb0d1379178767f
  Author: Don Olmstead <don.olmstead at sony.com>
  Date:   2023-10-10 (Tue, 10 Oct 2023)

  Changed paths:
    M Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp
    M Source/WebKit/GPUProcess/media/RemoteAudioSourceProviderProxy.cpp
    M Source/WebKit/Platform/IPC/JSIPCBinding.h
    M Source/WebKit/Platform/IPC/SharedBufferReference.cpp
    M Source/WebKit/Platform/IPC/StreamServerConnection.h
    M Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp
    M Source/WebKit/Platform/SharedMemory.cpp
    M Source/WebKit/Platform/SharedMemory.h
    M Source/WebKit/Platform/SharedMemory.serialization.in
    M Source/WebKit/Platform/cocoa/SharedMemoryCocoa.cpp
    M Source/WebKit/Platform/unix/SharedMemoryUnix.cpp
    M Source/WebKit/Platform/win/SharedMemoryWin.cpp
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Shared/Cocoa/SharedCARingBuffer.cpp
    M Source/WebKit/Shared/Cocoa/SharedCARingBuffer.h
    M Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm
    M Source/WebKit/Shared/IPCStreamTester.cpp
    M Source/WebKit/Shared/IPCStreamTester.h
    M Source/WebKit/Shared/IPCStreamTester.messages.in
    M Source/WebKit/Shared/ShareableBitmap.serialization.in
    M Source/WebKit/Shared/ShareableBitmapHandle.cpp
    M Source/WebKit/Shared/ShareableResource.cpp
    M Source/WebKit/Shared/ShareableResource.serialization.in
    M Source/WebKit/Shared/WebCoreArgumentCoders.cpp
    M Source/WebKit/Shared/WebHitTestResultData.cpp
    M Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp
    M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm
    M Source/WebKit/UIProcess/mac/WebPageProxyMac.mm
    M Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp
    M Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp
    M Source/WebKit/WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp
    M Source/WebKit/WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp
    M Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp
    M Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm
    M Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp
    M Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm

  Log Message:
  -----------
  SharedMemory::Handle should always be valid
https://bugs.webkit.org/show_bug.cgi?id=261695

Reviewed by Kimmo Kinnunen.

A `SharedMemory::Handle` should always be valid. Remove the `isNull`
method and default constructor. Instead of `isNull` checks use
`std::optional<SharedMemory::Handle>`. Validate the handle within the
generated serialization.

* Source/WebKit/GPUProcess/graphics/RemoteGraphicsContextGL.cpp:
(WebKit::RemoteGraphicsContextGL::readPixelsSharedMemory):
* Source/WebKit/GPUProcess/media/RemoteAudioDestinationManager.cpp:
(RemoteAudioDestinationManager::createAudioDestination):
* Source/WebKit/GPUProcess/media/RemoteAudioSourceProviderProxy.cpp:
(WebKit::RemoteAudioSourceProviderProxy::configureAudioStorage):
* Source/WebKit/Platform/IPC/JSIPCBinding.h:
(IPC::jsValueForDecodedArgumentValue):
* Source/WebKit/Platform/IPC/SharedBufferReference.cpp:
(IPC::SharedBufferReference::encode const):
(IPC::SharedBufferReference::decode):
* Source/WebKit/Platform/IPC/StreamServerConnection.h:
* Source/WebKit/Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::processMessage):
* Source/WebKit/Platform/SharedMemory.cpp:
(WebKit::SharedMemoryHandle::SharedMemoryHandle):
(WebKit::SharedMemoryHandle::isNull const): Deleted.
* Source/WebKit/Platform/SharedMemory.h:
* Source/WebKit/Platform/SharedMemory.serialization.in:
* Source/WebKit/Platform/cocoa/SharedMemoryCocoa.cpp:
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::createHandle):
* Source/WebKit/Platform/unix/SharedMemoryUnix.cpp:
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::createHandle):
* Source/WebKit/Platform/win/SharedMemoryWin.cpp:
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::createHandle):
* Source/WebKit/Scripts/webkit/messages.py:
(types_that_must_be_moved):
* Source/WebKit/Shared/Cocoa/SharedCARingBuffer.cpp:
(WebKit::ProducerSharedCARingBuffer::allocate):
* Source/WebKit/Shared/Cocoa/SharedCARingBuffer.h:
* Source/WebKit/Shared/Cocoa/WebCoreArgumentCodersCocoa.mm:
(IPC::ArgumentCoder<WebCore::Font>::encodePlatformData):
(IPC::ArgumentCoder<WebCore::Font>::decodePlatformData):
* Source/WebKit/Shared/IPCStreamTester.cpp:
(WebKit::IPCStreamTester::syncMessageReturningSharedMemory1):
* Source/WebKit/Shared/IPCStreamTester.h:
* Source/WebKit/Shared/IPCStreamTester.messages.in:
* Source/WebKit/Shared/ShareableBitmap.serialization.in:
* Source/WebKit/Shared/ShareableBitmapHandle.cpp:
(WebKit::ShareableBitmapHandle::ShareableBitmapHandle):
* Source/WebKit/Shared/ShareableResource.cpp:
(WebKit::ShareableResourceHandle::ShareableResourceHandle):
* Source/WebKit/Shared/ShareableResource.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<WebCore::FontCustomPlatformData>::encode):
(IPC::ArgumentCoder<FontCustomPlatformData>::decode):
(IPC::ArgumentCoder<WebCore::FragmentedSharedBuffer>::encode):
(IPC::ArgumentCoder<WebCore::FragmentedSharedBuffer>::decode):
* Source/WebKit/Shared/WebHitTestResultData.cpp:
(WebKit::WebHitTestResultData::WebHitTestResultData):
* Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::saveImageToLibrary):
* Source/WebKit/UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::setPromisedDataForImage):
* Source/WebKit/WebProcess/GPU/graphics/RemoteGraphicsContextGLProxy.cpp:
(WebKit::RemoteGraphicsContextGLProxy::readPixels):
* Source/WebKit/WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp:
(WebKit::RemoteAudioDestinationProxy::connection):
* Source/WebKit/WebProcess/GPU/webrtc/AudioMediaStreamTrackRendererInternalUnitManager.cpp:
(WebKit::AudioMediaStreamTrackRendererInternalUnitManager::Proxy::start):
* Source/WebKit/WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp:
(WebKit::MediaRecorderPrivate::audioSamplesAvailable):
* Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.cpp:
* Source/WebKit/WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::setBufferForType):
* Source/WebKit/WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:
(WebKit::WebDragClient::declareAndWriteDragImage):
* Source/WebKit/WebProcess/WebPage/IPCTestingAPI.cpp:
(WebKit::IPCTestingAPI::JSSharedMemory::createHandle):
(WebKit::IPCTestingAPI::encodeSharedMemory):
(IPC::jsValueForDecodedArgumentValue):
* Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::performActionOnElement):

Canonical link: https://commits.webkit.org/269164@main




More information about the webkit-changes mailing list