[vlc-devel] [PATCH] vlc_strftime: avoid infinite loop on windows when format string is invalid
Romain Vimont
rom at rom1v.com
Thu Jan 25 16:04:09 CET 2018
On Thu, Jan 25, 2018 at 03:16:05PM +0100, Romain Vimont wrote:
> On Thu, Jan 25, 2018 at 02:44:12PM +0100, Pierre Lamot wrote:
> > ---
> > src/text/strings.c | 7 +++++++
> > 1 file changed, 7 insertions(+)
> >
> > diff --git a/src/text/strings.c b/src/text/strings.c
> > index 4b282bb397..cc26745f07 100644
> > --- a/src/text/strings.c
> > +++ b/src/text/strings.c
> > @@ -506,6 +506,13 @@ char *vlc_strftime( const char *tformat )
> > char *ret = realloc (str, len + 1);
> > return ret ? ret : str; /* <- this cannot fail */
> > }
> > +#ifdef _WIN32
> > + else if ( errno == EINVAL ) /* ie: invalid tformat */
>
> Since strftime() returning 0 does not necessarily indicate an error,
> errno should be set to 0 before the call (otherwise, it may contain
> garbage value).
>
> But I think this corner case is not handled correctly anyway in this
> function.
And for good reasons:
> BUGS
> If the output string would exceed max bytes, errno is not set. This
> makes it impossible to distinguish this error case from cases where
> the format string legitimately produces a zero-length output string.
> "man strftime" says:
>
> > For example, in many locales %p yields an empty string.
>
> > + {
> > + free(str);
> > + return NULL;
> > + }
> > +#endif
> > free (str);
> > }
> > vlc_assert_unreachable ();
> > --
> > 2.14.1
> >
> > _______________________________________________
> > vlc-devel mailing list
> > To unsubscribe or modify your subscription options:
> > https://mailman.videolan.org/listinfo/vlc-devel
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list