Re: [PATCH] weston: Fix memleak issue in compositor.c

2014-06-18 Thread Kristian Høgsberg
On Tue, May 27, 2014 at 02:30:59PM +0530, Srivardhan Hebbar wrote:
> This fix is upon "Hardening " patch. [PATCH 2/2] Handle 
> OOM with signal events.

Thanks, applied.  I edited the commit message to wrap at 72 columns.

Kristian

> 
> Signed-off-by: Srivardhan Hebbar 
> ---
>  src/compositor.c |   23 +--
>  1 file changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/src/compositor.c b/src/compositor.c
> index 574db2d..f233101 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -4207,6 +4207,11 @@ int main(int argc, char *argv[])
>   signals[3] = wl_event_loop_add_signal(loop, SIGCHLD, sigchld_handler,
> NULL);
>  
> + if (!signals[0] || !signals[1] || !signals[2] || !signals[3]) {
> + ret = EXIT_FAILURE;
> + goto out_signals;
> + }
> +
>   if (noconfig == 0)
>   config = weston_config_parse("weston.ini");
>   if (config != NULL) {
> @@ -4234,13 +4239,16 @@ int main(int argc, char *argv[])
>  
>   backend_init = weston_load_module(backend, "backend_init");
>   free(backend);
> - if (!backend_init)
> - exit(EXIT_FAILURE);
> + if (!backend_init) {
> + ret = EXIT_FAILURE;
> + goto out_signals;
> + }
>  
>   ec = backend_init(display, &argc, argv, config);
>   if (ec == NULL) {
>   weston_log("fatal: failed to create compositor\n");
> - exit(EXIT_FAILURE);
> + ret = EXIT_FAILURE;
> + goto out_signals;
>   }
>  
>   catch_signals();
> @@ -4321,12 +4329,15 @@ int main(int argc, char *argv[])
>  
>   wl_signal_emit(&ec->destroy_signal, ec);
>  
> - for (i = ARRAY_LENGTH(signals); i;)
> - wl_event_source_remove(signals[--i]);
> -
>   weston_compositor_xkb_destroy(ec);
>  
>   ec->destroy(ec);
> +
> +out_signals:
> + for (i = ARRAY_LENGTH(signals) - 1; i >= 0; i--)
> + if (signals[i])
> + wl_event_source_remove(signals[i]);
> +
>   wl_display_destroy(display);
>  
>   weston_log_file_close();
> -- 
> 1.7.9.5
> 
> ___
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


Re: [PATCH] weston: Fix memleak issue in compositor.c

2014-06-03 Thread Hardening
Le 27/05/2014 11:00, Srivardhan Hebbar a écrit :
> This fix is upon "Hardening " patch. [PATCH 2/2] Handle 
> OOM with signal events.
> 
LGTM

Reviewed-by: Hardening 

> Signed-off-by: Srivardhan Hebbar 
> ---
>  src/compositor.c |   23 +--
>  1 file changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/src/compositor.c b/src/compositor.c
> index 574db2d..f233101 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -4207,6 +4207,11 @@ int main(int argc, char *argv[])
>   signals[3] = wl_event_loop_add_signal(loop, SIGCHLD, sigchld_handler,
> NULL);
>  
> + if (!signals[0] || !signals[1] || !signals[2] || !signals[3]) {
> + ret = EXIT_FAILURE;
> + goto out_signals;
> + }
> +
>   if (noconfig == 0)
>   config = weston_config_parse("weston.ini");
>   if (config != NULL) {
> @@ -4234,13 +4239,16 @@ int main(int argc, char *argv[])
>  
>   backend_init = weston_load_module(backend, "backend_init");
>   free(backend);
> - if (!backend_init)
> - exit(EXIT_FAILURE);
> + if (!backend_init) {
> + ret = EXIT_FAILURE;
> + goto out_signals;
> + }
>  
>   ec = backend_init(display, &argc, argv, config);
>   if (ec == NULL) {
>   weston_log("fatal: failed to create compositor\n");
> - exit(EXIT_FAILURE);
> + ret = EXIT_FAILURE;
> + goto out_signals;
>   }
>  
>   catch_signals();
> @@ -4321,12 +4329,15 @@ int main(int argc, char *argv[])
>  
>   wl_signal_emit(&ec->destroy_signal, ec);
>  
> - for (i = ARRAY_LENGTH(signals); i;)
> - wl_event_source_remove(signals[--i]);
> -
>   weston_compositor_xkb_destroy(ec);
>  
>   ec->destroy(ec);
> +
> +out_signals:
> + for (i = ARRAY_LENGTH(signals) - 1; i >= 0; i--)
> + if (signals[i])
> + wl_event_source_remove(signals[i]);
> +
>   wl_display_destroy(display);
>  
>   weston_log_file_close();
> 


-- 
David FORT
website: http://www.hardening-consulting.com/

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


RE: [PATCH] weston: Fix memleak issue in compositor.c

2014-06-02 Thread Srivardhan
Hi,

Has someone looked into reviewing this patch? May I know if it requires any
change?

Thank-you,
Hebbar

> -Original Message-
> From: wayland-devel [mailto:wayland-devel-
> boun...@lists.freedesktop.org] On Behalf Of Srivardhan Hebbar
> Sent: Tuesday, May 27, 2014 2:31 PM
> To: wayland-devel@lists.freedesktop.org
> Cc: sri.heb...@samsung.com
> Subject: [PATCH] weston: Fix memleak issue in compositor.c
> 
> This fix is upon "Hardening " patch. [PATCH 2/2]
> Handle OOM with signal events.
> 
> Signed-off-by: Srivardhan Hebbar 
> ---
>  src/compositor.c |   23 +--
>  1 file changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/src/compositor.c b/src/compositor.c index 574db2d..f233101
> 100644
> --- a/src/compositor.c
> +++ b/src/compositor.c
> @@ -4207,6 +4207,11 @@ int main(int argc, char *argv[])
>   signals[3] = wl_event_loop_add_signal(loop, SIGCHLD,
> sigchld_handler,
> NULL);
> 
> + if (!signals[0] || !signals[1] || !signals[2] || !signals[3]) {
> + ret = EXIT_FAILURE;
> + goto out_signals;
> + }
> +
>   if (noconfig == 0)
>   config = weston_config_parse("weston.ini");
>   if (config != NULL) {
> @@ -4234,13 +4239,16 @@ int main(int argc, char *argv[])
> 
>   backend_init = weston_load_module(backend, "backend_init");
>   free(backend);
> - if (!backend_init)
> - exit(EXIT_FAILURE);
> + if (!backend_init) {
> + ret = EXIT_FAILURE;
> + goto out_signals;
> + }
> 
>   ec = backend_init(display, &argc, argv, config);
>   if (ec == NULL) {
>   weston_log("fatal: failed to create compositor\n");
> - exit(EXIT_FAILURE);
> + ret = EXIT_FAILURE;
> + goto out_signals;
>   }
> 
>   catch_signals();
> @@ -4321,12 +4329,15 @@ int main(int argc, char *argv[])
> 
>   wl_signal_emit(&ec->destroy_signal, ec);
> 
> - for (i = ARRAY_LENGTH(signals); i;)
> - wl_event_source_remove(signals[--i]);
> -
>   weston_compositor_xkb_destroy(ec);
> 
>   ec->destroy(ec);
> +
> +out_signals:
> + for (i = ARRAY_LENGTH(signals) - 1; i >= 0; i--)
> + if (signals[i])
> + wl_event_source_remove(signals[i]);
> +
>   wl_display_destroy(display);
> 
>   weston_log_file_close();
> --
> 1.7.9.5
> 
> ___
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel


[PATCH] weston: Fix memleak issue in compositor.c

2014-05-27 Thread Srivardhan Hebbar
This fix is upon "Hardening " patch. [PATCH 2/2] Handle 
OOM with signal events.

Signed-off-by: Srivardhan Hebbar 
---
 src/compositor.c |   23 +--
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/compositor.c b/src/compositor.c
index 574db2d..f233101 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4207,6 +4207,11 @@ int main(int argc, char *argv[])
signals[3] = wl_event_loop_add_signal(loop, SIGCHLD, sigchld_handler,
  NULL);
 
+   if (!signals[0] || !signals[1] || !signals[2] || !signals[3]) {
+   ret = EXIT_FAILURE;
+   goto out_signals;
+   }
+
if (noconfig == 0)
config = weston_config_parse("weston.ini");
if (config != NULL) {
@@ -4234,13 +4239,16 @@ int main(int argc, char *argv[])
 
backend_init = weston_load_module(backend, "backend_init");
free(backend);
-   if (!backend_init)
-   exit(EXIT_FAILURE);
+   if (!backend_init) {
+   ret = EXIT_FAILURE;
+   goto out_signals;
+   }
 
ec = backend_init(display, &argc, argv, config);
if (ec == NULL) {
weston_log("fatal: failed to create compositor\n");
-   exit(EXIT_FAILURE);
+   ret = EXIT_FAILURE;
+   goto out_signals;
}
 
catch_signals();
@@ -4321,12 +4329,15 @@ int main(int argc, char *argv[])
 
wl_signal_emit(&ec->destroy_signal, ec);
 
-   for (i = ARRAY_LENGTH(signals); i;)
-   wl_event_source_remove(signals[--i]);
-
weston_compositor_xkb_destroy(ec);
 
ec->destroy(ec);
+
+out_signals:
+   for (i = ARRAY_LENGTH(signals) - 1; i >= 0; i--)
+   if (signals[i])
+   wl_event_source_remove(signals[i]);
+
wl_display_destroy(display);
 
weston_log_file_close();
-- 
1.7.9.5

___
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel