Fix memory leak in portabtest Check_strtok_r() master
authorAlexander Barton <alex@barton.de>
Sat, 15 Feb 2020 13:56:07 +0000 (14:56 +0100)
committerAlexander Barton <alex@barton.de>
Sat, 15 Feb 2020 13:56:07 +0000 (14:56 +0100)
Fix the following Clang "LeakSanitizer" error (which isn't quite
relevant in this test program, but anyway):

  ERROR: LeakSanitizer: detected memory leaks

  Direct leak of 7 byte(s) in 1 object(s) allocated from:
      #0 0x7f8c4d022810 in strdup (/lib/x86_64-linux-gnu/libasan.so.5+0x3a810)
      #1 0x5601a801491a in Check_strtok_r (/net/arthur/home/alex/Develop/ngIRCd/ngIRCd.git/src/portab/portabtest+0x291a)
      #2 0x5601a8014d77 in main (/net/arthur/home/alex/Develop/ngIRCd/ngIRCd.git/src/portab/portabtest+0x2d77)
      #3 0x7f8c4c69009a in __libc_start_main ../csu/libc-start.c:308

  SUMMARY: AddressSanitizer: 7 byte(s) leaked in 1 allocation(s).
  FAIL: portabtest

src/portab/portabtest.c

index e7b0dcc838ad3b0e82fb9edf1b2475525327cda6..5ad37b99ca3a4effb6524e0b8ed00e4514bbc425 100644 (file)
@@ -104,9 +104,10 @@ Check_strlcat(void)
 static void
 Check_strtok_r(void)
 {
 static void
 Check_strtok_r(void)
 {
-       char *ptr, *last;
+       char *str, *ptr, *last;
 
        ptr = strdup("12,abc");
 
        ptr = strdup("12,abc");
+       str = ptr;
 
        ptr = strtok_r(ptr, ",", &last);
        if (!ptr)
 
        ptr = strtok_r(ptr, ",", &last);
        if (!ptr)
@@ -123,6 +124,8 @@ Check_strtok_r(void)
        ptr = strtok_r(NULL, ",", &last);
        if (ptr)
                Panic("strtok_r result #3");
        ptr = strtok_r(NULL, ",", &last);
        if (ptr)
                Panic("strtok_r result #3");
+
+       free(str);
 }
 
 #ifdef PROTOTYPES
 }
 
 #ifdef PROTOTYPES