[Spice-devel] [PATCH spice-server v3] test-gst: Remove options parsing leaks

Christophe Fergeau cfergeau at redhat.com
Tue Sep 12 11:17:15 UTC 2017


Acked-by: Christophe Fergeau <cfergeau at redhat.com>

On Tue, Sep 12, 2017 at 10:45:08AM +0100, Frediano Ziglio wrote:
> Command line options are not freed at the end of the program.
> These are detected as leaks by leak detector tools like address sanitizer.
> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/tests/test-gst.c | 36 ++++++++++++++++++++++++------------
>  1 file changed, 24 insertions(+), 12 deletions(-)
> 
> Changes since v2:
> - update syntax
> 
> diff --git a/server/tests/test-gst.c b/server/tests/test-gst.c
> index 40f738d78..302158a27 100644
> --- a/server/tests/test-gst.c
> +++ b/server/tests/test-gst.c
> @@ -296,6 +296,7 @@ output_frames(GstSample *sample, void *param)
>  static const EncoderInfo encoder_infos[] = {
>      { "mjpeg", mjpeg_encoder_new, SPICE_VIDEO_CODEC_TYPE_MJPEG,
>        "caps=image/jpeg", "jpegdec" },
> +#define encoder_info_mjpeg (&encoder_infos[0])
>      { "gstreamer:mjpeg", gstreamer_encoder_new, SPICE_VIDEO_CODEC_TYPE_MJPEG,
>        "caps=image/jpeg", "jpegdec" },
>      { "gstreamer:vp8",   gstreamer_encoder_new, SPICE_VIDEO_CODEC_TYPE_VP8,
> @@ -314,11 +315,11 @@ static const EncoderInfo encoder_infos[] = {
>  int main(int argc, char *argv[])
>  {
>      gchar *input_pipeline_desc = NULL;
> -    const gchar *image_format = "32BIT";
> -    const gchar *encoder_name = "mjpeg";
> +    gchar *image_format = NULL;
> +    gchar *encoder_name = NULL;
>      gchar *file_report_name = NULL;
>      gboolean use_hw_encoder = FALSE; // TODO use
> -    const gchar *clipping = "(0,0)x(100%,100%)";
> +    gchar *clipping = NULL;
>  
>      // - input pipeline
>      // - top/down
> @@ -368,19 +369,24 @@ int main(int argc, char *argv[])
>          exit(1);
>      }
>  
> -    const EncoderInfo *encoder = get_encoder_info(encoder_name);
> -    if (!encoder) {
> -        g_printerr("Encoder name unsupported: %s\n", encoder_name);
> -        exit(1);
> +    const EncoderInfo *encoder = encoder_info_mjpeg;
> +    if (encoder_name != NULL) {
> +        encoder = get_encoder_info(encoder_name);
> +        if (!encoder) {
> +            g_printerr("Encoder name unsupported: %s\n", encoder_name);
> +            exit(1);
> +        }
>      }
>  
> -    bitmap_format = get_bitmap_format(image_format);
> -    if (bitmap_format == SPICE_BITMAP_FMT_INVALID) {
> -        g_printerr("Invalid image format: %s\n", image_format);
> -        exit(1);
> +    if (image_format != NULL) {
> +        bitmap_format = get_bitmap_format(image_format);
> +        if (bitmap_format == SPICE_BITMAP_FMT_INVALID) {
> +            g_printerr("Invalid image format: %s\n", image_format);
> +            exit(1);
> +        }
>      }
>  
> -    parse_clipping(clipping);
> +    parse_clipping(clipping ? clipping : "(0,0)x(100%,100%)");
>  
>      if (minimum_psnr < 0) {
>          g_printerr("Invalid PSNR specified %f\n", minimum_psnr);
> @@ -432,6 +438,12 @@ int main(int argc, char *argv[])
>          exit(1);
>      }
>  
> +    g_free(encoder_name);
> +    g_free(image_format);
> +    g_free(input_pipeline_desc);
> +    g_free(clipping);
> +    g_option_context_free(context);
> +
>      return 0;
>  }
>  
> -- 
> 2.13.5
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list