From 4d7657e27bb83a9fbe385b52822795e38a045c31 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Thu, 28 Oct 2021 22:52:37 +0200 Subject: [PATCH] PipeWire capturer: fix crash when dlopening EGL and OpenGL We need to use RTC_NOT_SANITIZE("cfi-icall") everywhere where we do function typecasting, otherwise doing official Chrome builds will result into crash. Bug: chromium:1262535 Change-Id: If7358ccab6bd626e494b7ecd3077aa29502080c1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/236587 Reviewed-by: Florent Castelli Reviewed-by: Tommi Commit-Queue: Tommi Cr-Commit-Position: refs/heads/main@{#35281} --- modules/desktop_capture/linux/egl_dmabuf.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/desktop_capture/linux/egl_dmabuf.cc b/modules/desktop_capture/linux/egl_dmabuf.cc index 4c4e182698..c78036b20c 100644 --- a/modules/desktop_capture/linux/egl_dmabuf.cc +++ b/modules/desktop_capture/linux/egl_dmabuf.cc @@ -157,6 +157,7 @@ static void CloseLibrary(void* library) { static void* g_lib_egl = nullptr; +RTC_NO_SANITIZE("cfi-icall") static bool OpenEGL() { g_lib_egl = dlopen("libEGL.so.1", RTLD_NOW | RTLD_GLOBAL); if (g_lib_egl) { @@ -168,6 +169,7 @@ static bool OpenEGL() { return false; } +RTC_NO_SANITIZE("cfi-icall") static bool LoadEGL() { if (OpenEGL()) { EglBindAPI = (eglBindAPI_func)EglGetProcAddress("eglBindAPI"); @@ -198,6 +200,7 @@ static bool LoadEGL() { static void* g_lib_gl = nullptr; +RTC_NO_SANITIZE("cfi-icall") static bool OpenGL() { std::vector names = {"libGL.so.1", "libGL.so"}; for (const std::string& name : names) { @@ -212,6 +215,7 @@ static bool OpenGL() { return false; } +RTC_NO_SANITIZE("cfi-icall") static bool LoadGL() { if (OpenGL()) { GlGetString = (glGetString_func)GlXGetProcAddressARB("glGetString");