Skip to content

Commit 308633d

Browse files
committed
Fix leaks on failure to obtain backend interface implementation
If wpe_load_object() fails to obtain the implementation for interfaces, free the struct before the early error returns instead of leaking them.
1 parent 734f2ac commit 308633d

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/renderer-backend-egl.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ wpe_renderer_backend_egl_create(int host_fd)
3838
return 0;
3939

4040
backend->interface = wpe_load_object("_wpe_renderer_backend_egl_interface");
41-
if (!backend->interface)
41+
if (!backend->interface) {
42+
free(backend);
4243
return 0;
44+
}
4345

4446
backend->interface_data = backend->interface->create(host_fd);
4547

@@ -77,8 +79,10 @@ wpe_renderer_backend_egl_target_create(int host_fd)
7779
return 0;
7880

7981
target->interface = wpe_load_object("_wpe_renderer_backend_egl_target_interface");
80-
if (!target->interface)
82+
if (!target->interface) {
83+
free(target);
8184
return 0;
85+
}
8286

8387
target->interface_data = target->interface->create(target, host_fd);
8488

@@ -142,8 +146,10 @@ wpe_renderer_backend_egl_offscreen_target_create()
142146
return 0;
143147

144148
target->interface = wpe_load_object("_wpe_renderer_backend_egl_offscreen_target_interface");
145-
if (!target->interface)
149+
if (!target->interface) {
150+
free(target);
146151
return 0;
152+
}
147153

148154
target->interface_data = target->interface->create();
149155

0 commit comments

Comments
 (0)