[dvblast-devel] [Git][videolan/dvblast][master] 3 commits: if hour, min or sec is >= 100 we can overflow duration_str
Christophe Massiot
cmassiot at upipe.org
Mon Sep 14 18:50:08 CEST 2020
Hi Georgi,
Can your propose a fix?
Thanks
> On 1 Sep 2020, at 08:28, Georgi Chorbadzhiyski <georgi at unixsol.net> wrote:
>
> On 1.09.20 1:01, Christophe Massiot wrote:
>> Christophe Massiot pushed to branch master at VideoLAN / dvblast
>>
>>
>> Commits:
>> ff1e5700 by Marcin Kozlowski at 2020-03-25T08:53:48+01:00
>> if hour, min or sec is >= 100 we can overflow duration_str
>>
>> Also use %u for hours as it can be >= 100
>>
>> - - - - -
>> 71e95679 by Marcin Kozlowski at 2020-04-23T15:12:15+02:00
>> Fixed forgotten variables
>>
>> - - - - -
>> c6fa7806 by Christophe Massiot at 2020-09-01T00:00:46+02:00
>> Merge branch 'marcinguy-duration-fix'
>>
>> - - - - -
>>
>>
>> 1 changed file:
>>
>> - dvblastctl.c
>>
>>
>> Changes:
>>
>> =====================================
>> dvblastctl.c
>> =====================================
>> @@ -217,32 +217,31 @@ void print_eit_events(uint8_t *p_eit, f_print pf_print, void *print_opaque, f_ic
>> uint8_t j = 0;
>> while ((p_event = eit_get_event(p_eit, j)) != NULL) {
>> j++;
>> - char start_str[24], duration_str[10];
>> + char start_str[24];
>
> A much simpler and better fix (if we care about hours/minutes/seconds bigger than 99)
> is to just increase duration_str to 13 or to be on the safe side 16.
>
>> int duration, hour, min, sec;
>> time_t start_ts;
>>
>> start_ts = dvb_time_format_UTC(eitn_get_start_time(p_event), NULL, start_str);
>>
>> dvb_time_decode_bcd(eitn_get_duration_bcd(p_event), &duration, &hour, &min, &sec);
>> - sprintf(duration_str, "%02d:%02d:%02d", hour, min, sec);
>>
>> switch (i_print_type) {
>> case PRINT_XML:
>> pf_print(print_opaque, "<EVENT id=\"%u\" start_time=\"%ld\" start_time_dec=\"%s\""
>> - " duration=\"%u\" duration_dec=\"%s\""
>> + " duration=\"%u\" duration_dec=\"%u:%02u:%02u\""
>
> That loses zero padding for hours.
>
>> " running=\"%d\" free_CA=\"%d\">",
>> eitn_get_event_id(p_event),
>> start_ts, start_str,
>> - duration, duration_str,
>> + duration, hour, min, sec,
>> eitn_get_running(p_event),
>> eitn_get_ca(p_event)
>> );
>> break;
>> default:
>> - pf_print(print_opaque, " * EVENT id=%u start_time=%ld start_time_dec=\"%s\" duration=%u duration_dec=%s running=%d free_CA=%d",
>> + pf_print(print_opaque, " * EVENT id=%u start_time=%ld start_time_dec=\"%s\" duration=%u duration_dec=%u:%02u:%02u running=%d free_CA=%d",
>> eitn_get_event_id(p_event),
>> start_ts, start_str,
>> - duration, duration_str,
>> + duration, hour, min, sec,
>> eitn_get_running(p_event),
>> eitn_get_ca(p_event)
>> );
>
> --
> Georgi Chorbadzhiyski | https://georgi.unixsol.org/ <https://georgi.unixsol.org/> | https://georgi.unixsol.org/git/ <https://georgi.unixsol.org/git/>
>
> _______________________________________________
> dvblast-devel mailing list
> dvblast-devel at videolan.org <mailto:dvblast-devel at videolan.org>
> https://mailman.videolan.org/listinfo/dvblast-devel <https://mailman.videolan.org/listinfo/dvblast-devel>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/dvblast-devel/attachments/20200914/0bb3fca9/attachment.html>
More information about the dvblast-devel
mailing list