]> git.ipfire.org Git - thirdparty/json-c.git/commitdiff
Fix memory leak and inconsistent output (due to varying fd numbers) in test_util_file.
authorEric Haszlakiewicz <erh+git@nimenees.com>
Sun, 21 Aug 2016 03:06:22 +0000 (23:06 -0400)
committerEric Haszlakiewicz <erh+git@nimenees.com>
Sun, 21 Aug 2016 03:06:22 +0000 (23:06 -0400)
tests/test_util_file.c
tests/test_util_file.expected

index 467c841ec060b38015910398c1a8ea60694d0459..950233b69b367606af8dd84e616654dfe7061547 100644 (file)
@@ -49,6 +49,7 @@ static void test_write_to_file()
               (rv == 0) ? "OK" : "FAIL", outfile2, rv);
        if (rv == 0)
                stat_and_cat(outfile2);
+       json_object_put(jso);
 }
 
 static void stat_and_cat(const char *file)
@@ -163,11 +164,18 @@ static void test_read_closed()
        int d = open("/dev/null", O_RDONLY, 0);
        if(d < 0)
        {
-         puts("FAIL: unable to open");
+               puts("FAIL: unable to open");
+       }
+       // Copy over to a fixed fd number so test output is consistent.
+       int fixed_d = 10;
+       if (dup2(d, fixed_d) < 0)
+       {
+               printf("FAIL: unable to dup to fd %d", fixed_d);
        }
        close(d);
+       close(fixed_d);
 
-       json_object *jso = json_object_from_fd(d);
+       json_object *jso = json_object_from_fd(fixed_d);
        if (jso != NULL)
        {
                printf("FAIL: read from closed fd returning non-NULL: 0x%lx\n",
index ce1a8f20066f778fb53914bed7b1e8b3cc51fa3a..c37f10fa32cbe481599342b1e840a929227d0ada 100644 (file)
@@ -1,7 +1,7 @@
 OK: json_object_from_fd(./valid.json)={ "foo": 123 }
 OK: json_object_from_file(./not_present.json) correctly returned NULL: json_object_from_file: error opening file ./not_present.json: ERRNO=ENOENT
 
-OK: json_object_from_fd(closed_fd), expecting NULL, EBADF, got:0x0, json_object_from_fd: error reading fd 3: ERRNO=EBADF
+OK: json_object_from_fd(closed_fd), expecting NULL, EBADF, got:0x0, json_object_from_fd: error reading fd 10: ERRNO=EBADF
 
 OK: json_object_to_file(json.out, jso)=0
 file[json.out], size=336, contents={"foo":1234,"foo1":"abcdefghijklmnopqrstuvwxyz","foo2":"abcdefghijklmnopqrstuvwxyz","foo3":"abcdefghijklmnopqrstuvwxyz","foo4":"abcdefghijklmnopqrstuvwxyz","foo5":"abcdefghijklmnopqrstuvwxyz","foo6":"abcdefghijklmnopqrstuvwxyz","foo7":"abcdefghijklmnopqrstuvwxyz","foo8":"abcdefghijklmnopqrstuvwxyz","foo9":"abcdefghijklmnopqrstuvwxyz"}