diff mbox series

[FFmpeg-devel] avformat/tests/imf: Test ff_imf_parse_cpl_from_xml_dom cleanup on error

Message ID HE1PR0101MB2219DE143439E923A902B7AA8F729@HE1PR0101MB2219.eurprd01.prod.exchangelabs.com
State Superseded
Headers show
Series [FFmpeg-devel] avformat/tests/imf: Test ff_imf_parse_cpl_from_xml_dom cleanup on error | expand

Commit Message

Andreas Rheinhardt Aug. 25, 2022, 8:57 p.m. UTC
Improves the test; also should fix Coverity issue #1512408.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavformat/tests/imf.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Comments

Pierre-Anthony Lemieux Aug. 26, 2022, 4:02 a.m. UTC | #1
On Thu, Aug 25, 2022 at 1:58 PM Andreas Rheinhardt
<andreas.rheinhardt@outlook.com> wrote:
>
> Improves the test; also should fix Coverity issue #1512408.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
>  libavformat/tests/imf.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/libavformat/tests/imf.c b/libavformat/tests/imf.c
> index e65629ccbc..a7b2ed3b4d 100644
> --- a/libavformat/tests/imf.c
> +++ b/libavformat/tests/imf.c
> @@ -338,10 +338,9 @@ static int test_cpl_parsing(void)
>      return 0;
>  }
>
> -static int test_bad_cpl_parsing(void)
> +static int test_bad_cpl_parsing(FFIMFCPL **cpl)
>  {
>      xmlDocPtr doc;
> -    FFIMFCPL *cpl;
>      int ret;
>
>      doc = xmlReadMemory(cpl_bad_doc, strlen(cpl_bad_doc), NULL, NULL, 0);
> @@ -350,7 +349,7 @@ static int test_bad_cpl_parsing(void)
>          return 1;
>      }
>
> -    ret = ff_imf_parse_cpl_from_xml_dom(doc, &cpl);
> +    ret = ff_imf_parse_cpl_from_xml_dom(doc, cpl);
>      xmlFreeDoc(doc);
>      if (ret) {
>          printf("CPL parsing failed.\n");
> @@ -506,6 +505,7 @@ fail:
>
>  int main(int argc, char *argv[])
>  {
> +    FFIMFCPL *cpl;
>      int ret = 0;
>
>      if (test_cpl_parsing() != 0)
> @@ -518,8 +518,10 @@ int main(int argc, char *argv[])
>          ret = 1;
>
>      printf("#### The following should fail ####\n");
> -    if (test_bad_cpl_parsing() == 0)
> +    if (test_bad_cpl_parsing(&cpl) == 0)
>          ret = 1;
> +    else if (cpl)
> +        printf("Improper cleanup after failed CPL parsing\n");

Shouldn't `ret` be set to 1 here as well?

>      printf("#### End failing test ####\n");
>
>      return ret;
> --
> 2.34.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Andreas Rheinhardt Aug. 26, 2022, 8:22 a.m. UTC | #2
Pierre-Anthony Lemieux:
> On Thu, Aug 25, 2022 at 1:58 PM Andreas Rheinhardt
> <andreas.rheinhardt@outlook.com> wrote:
>>
>> Improves the test; also should fix Coverity issue #1512408.
>>
>> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
>> ---
>>  libavformat/tests/imf.c | 10 ++++++----
>>  1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/libavformat/tests/imf.c b/libavformat/tests/imf.c
>> index e65629ccbc..a7b2ed3b4d 100644
>> --- a/libavformat/tests/imf.c
>> +++ b/libavformat/tests/imf.c
>> @@ -338,10 +338,9 @@ static int test_cpl_parsing(void)
>>      return 0;
>>  }
>>
>> -static int test_bad_cpl_parsing(void)
>> +static int test_bad_cpl_parsing(FFIMFCPL **cpl)
>>  {
>>      xmlDocPtr doc;
>> -    FFIMFCPL *cpl;
>>      int ret;
>>
>>      doc = xmlReadMemory(cpl_bad_doc, strlen(cpl_bad_doc), NULL, NULL, 0);
>> @@ -350,7 +349,7 @@ static int test_bad_cpl_parsing(void)
>>          return 1;
>>      }
>>
>> -    ret = ff_imf_parse_cpl_from_xml_dom(doc, &cpl);
>> +    ret = ff_imf_parse_cpl_from_xml_dom(doc, cpl);
>>      xmlFreeDoc(doc);
>>      if (ret) {
>>          printf("CPL parsing failed.\n");
>> @@ -506,6 +505,7 @@ fail:
>>
>>  int main(int argc, char *argv[])
>>  {
>> +    FFIMFCPL *cpl;
>>      int ret = 0;
>>
>>      if (test_cpl_parsing() != 0)
>> @@ -518,8 +518,10 @@ int main(int argc, char *argv[])
>>          ret = 1;
>>
>>      printf("#### The following should fail ####\n");
>> -    if (test_bad_cpl_parsing() == 0)
>> +    if (test_bad_cpl_parsing(&cpl) == 0)
>>          ret = 1;
>> +    else if (cpl)
>> +        printf("Improper cleanup after failed CPL parsing\n");
> 
> Shouldn't `ret` be set to 1 here as well?
> 

Will do. (When run as part of FATE, the test would nevertheless fail,
because the ref file does not contain the "Improper cleanup" line.)

>>      printf("#### End failing test ####\n");
>>
>>      return ret;
>> --
>> 2.34.1
Pierre-Anthony Lemieux Aug. 26, 2022, 3:45 p.m. UTC | #3
On Fri, Aug 26, 2022 at 1:22 AM Andreas Rheinhardt
<andreas.rheinhardt@outlook.com> wrote:
>
> Pierre-Anthony Lemieux:
> > On Thu, Aug 25, 2022 at 1:58 PM Andreas Rheinhardt
> > <andreas.rheinhardt@outlook.com> wrote:
> >>
> >> Improves the test; also should fix Coverity issue #1512408.
> >>
> >> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> >> ---
> >>  libavformat/tests/imf.c | 10 ++++++----
> >>  1 file changed, 6 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/libavformat/tests/imf.c b/libavformat/tests/imf.c
> >> index e65629ccbc..a7b2ed3b4d 100644
> >> --- a/libavformat/tests/imf.c
> >> +++ b/libavformat/tests/imf.c
> >> @@ -338,10 +338,9 @@ static int test_cpl_parsing(void)
> >>      return 0;
> >>  }
> >>
> >> -static int test_bad_cpl_parsing(void)
> >> +static int test_bad_cpl_parsing(FFIMFCPL **cpl)
> >>  {
> >>      xmlDocPtr doc;
> >> -    FFIMFCPL *cpl;
> >>      int ret;
> >>
> >>      doc = xmlReadMemory(cpl_bad_doc, strlen(cpl_bad_doc), NULL, NULL, 0);
> >> @@ -350,7 +349,7 @@ static int test_bad_cpl_parsing(void)
> >>          return 1;
> >>      }
> >>
> >> -    ret = ff_imf_parse_cpl_from_xml_dom(doc, &cpl);
> >> +    ret = ff_imf_parse_cpl_from_xml_dom(doc, cpl);
> >>      xmlFreeDoc(doc);
> >>      if (ret) {
> >>          printf("CPL parsing failed.\n");
> >> @@ -506,6 +505,7 @@ fail:
> >>
> >>  int main(int argc, char *argv[])
> >>  {
> >> +    FFIMFCPL *cpl;
> >>      int ret = 0;
> >>
> >>      if (test_cpl_parsing() != 0)
> >> @@ -518,8 +518,10 @@ int main(int argc, char *argv[])
> >>          ret = 1;
> >>
> >>      printf("#### The following should fail ####\n");
> >> -    if (test_bad_cpl_parsing() == 0)
> >> +    if (test_bad_cpl_parsing(&cpl) == 0)
> >>          ret = 1;
> >> +    else if (cpl)
> >> +        printf("Improper cleanup after failed CPL parsing\n");
> >
> > Shouldn't `ret` be set to 1 here as well?
> >
>
> Will do. (When run as part of FATE, the test would nevertheless fail,
> because the ref file does not contain the "Improper cleanup" line.)

Thanks, and yes.

>
> >>      printf("#### End failing test ####\n");
> >>
> >>      return ret;
> >> --
> >> 2.34.1
diff mbox series

Patch

diff --git a/libavformat/tests/imf.c b/libavformat/tests/imf.c
index e65629ccbc..a7b2ed3b4d 100644
--- a/libavformat/tests/imf.c
+++ b/libavformat/tests/imf.c
@@ -338,10 +338,9 @@  static int test_cpl_parsing(void)
     return 0;
 }
 
-static int test_bad_cpl_parsing(void)
+static int test_bad_cpl_parsing(FFIMFCPL **cpl)
 {
     xmlDocPtr doc;
-    FFIMFCPL *cpl;
     int ret;
 
     doc = xmlReadMemory(cpl_bad_doc, strlen(cpl_bad_doc), NULL, NULL, 0);
@@ -350,7 +349,7 @@  static int test_bad_cpl_parsing(void)
         return 1;
     }
 
-    ret = ff_imf_parse_cpl_from_xml_dom(doc, &cpl);
+    ret = ff_imf_parse_cpl_from_xml_dom(doc, cpl);
     xmlFreeDoc(doc);
     if (ret) {
         printf("CPL parsing failed.\n");
@@ -506,6 +505,7 @@  fail:
 
 int main(int argc, char *argv[])
 {
+    FFIMFCPL *cpl;
     int ret = 0;
 
     if (test_cpl_parsing() != 0)
@@ -518,8 +518,10 @@  int main(int argc, char *argv[])
         ret = 1;
 
     printf("#### The following should fail ####\n");
-    if (test_bad_cpl_parsing() == 0)
+    if (test_bad_cpl_parsing(&cpl) == 0)
         ret = 1;
+    else if (cpl)
+        printf("Improper cleanup after failed CPL parsing\n");
     printf("#### End failing test ####\n");
 
     return ret;