[vlc-devel] [PATCH] stream: iconv: convert only if we have a conversion descriptor

Thomas Guillem thomas at gllm.fr
Fri Jun 23 13:00:21 CEST 2017


On Fri, Jun 23, 2017, at 12:10, Shaleen Jain wrote:
> From d274065aeb20b6538a108bb310e7c8ab2445e5fd Mon Sep 17 00:00:00 2001> From: Shaleen Jain <shaleen.jain95 at gmail.com>
> Date: Fri, 23 Jun 2017 15:26:40 +0530
> Subject: [PATCH] stream: iconv: convert only if we have a conversion
> descriptor> 
> ---
>  src/input/stream.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/src/input/stream.c b/src/input/stream.c
> index affc7b2c0d..ecdaa2f997 100644
> --- a/src/input/stream.c
> +++ b/src/input/stream.c
> @@ -195,6 +195,7 @@ char *vlc_stream_ReadLine( stream_t *s )
>          if( i_pos == 0 && i_data >= 2 )
>          {
>              const char *psz_encoding = NULL;
> +          priv->text.conv = (vlc_iconv_t)-1;
>  
>              if( unlikely(priv->text.conv != (vlc_iconv_t)-1) )
>              {   /* seek back to beginning? reset */
> @@ -220,7 +221,7 @@ char *vlc_stream_ReadLine( stream_t *s )
>                  if( unlikely(priv->text.conv == (vlc_iconv_t)-1) )
>                  {
>                      msg_Err( s, "iconv_open failed" );
> -                    goto error;
> +             return NULL;
>                  }
>                  priv->text.char_width = 2;
>              }
> @@ -327,7 +328,8 @@ char *vlc_stream_ReadLine( stream_t *s )
>              p_in = p_line;
>              p_out = psz_new_line;
>  
> -            if( vlc_iconv( priv->text.conv, &p_in, &i_in, &p_out,
>              &i_out ) == (size_t)-1 )> +          if( priv->text.conv != (vlc_iconv_t)-1 &&
> +                     vlc_iconv( priv->text.conv, &p_in, &i_in,
>                       &p_out, &i_out ) == (size_t)-1 )>              {
>                  msg_Err( s, "conversion error: %s", vlc_strerror_c(
>                  errno ) );>                  msg_Dbg( s, "original: %d, in %zu, out %zu", i_line,
>                  i_in, i_out );
OK but this is still not sane, you should add a goto error just after
the errors logs. It's better to return nothing here than something that
is badly or not converted.
> -- 
> 2.13.1
> 
> On Thu, Jun 22, 2017 at 5:45 PM, Rémi Denis-Courmont
> <remi at remlab.net> wrote:> 
>> Le 22 juin 2017 14:44:49 GMT+03:00, Shaleen Jain
>> <shaleen.jain95 at gmail.com> a écrit :>>> 
>>> On Wed, Jun 21, 2017 at 11:38 PM, Rémi Denis-Courmont
>>> <remi at remlab.net> wrote:>>> 
>>>> Le keskiviikkona 21. kesäkuuta 2017, 22.55.37 EEST Shaleen Jain a
>>>> écrit :
>>>>> How so?>>>> It´s still not resulting in anything sane.
>>> I'm sorry I don't see how the logic is incorrect, 
>>> if priv->text.conv is -1 (which will happen if vlc_iconv_open()
>>> fails)>>> priv->text.conv != (vlc_iconv_t)(-1) would be false and vlc_iconv()
>>> would not run, otherwise it would proceed to do the conversion.>>>> --
>>>> 雷米‧德尼-库尔蒙 https://www.remlab.net/
>>>> _______________________________________________ vlc-devel mailing
>>>> list To unsubscribe or modify your subscription options:
>>>> https://mailman.videolan.org/listinfo/vlc-devel>>> 
>>> 
>> 
>> Skipping the conversion is not going to result in sane behaviour.
> It isn't suppose to do anything sane by itself, it's a sanity check
> for when psz_encoding is null and the program doesn't need to do a
> conversion.> 
> Also "goto error" when iconv_open fails is going to result in a
> invalid free of p_line.
free(NULL) is valid, it's a NO-OP, we do it a lot in the VLC codebase.

> 
> Besides if you are not going to provide any constructive review and
> take someone else's patches and try to implement it yourself, without
> posting on the mailing list and be counter-productive then you might
> just as well do a fork.
This is not an acceptable way of talking to one of the biggest
contributors of the VLC project (and the same for every others members).
>> 
>> --
>>  Rémi Denis-Courmont
>>  Typed on an inconvenient virtual keyboard
> 
> _________________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20170623/35fbea2c/attachment.html>


More information about the vlc-devel mailing list