Browse code

fuzz - 12122 - Fix to memory leak by properly free'ing the dirname variable in OLE2 parser.

Micah Snyder authored on 2019/01/23 03:15:25
Showing 1 changed files
... ...
@@ -767,10 +767,16 @@ ole2_walk_property_tree(ole2_header_t * hdr, const char *dir, int32_t prop_index
767 767
                     }
768 768
                     else {
769 769
                         ole2_list_delete(&node_list);
770
+                            if (dirname)
771
+                                free(dirname);
770 772
                         return ret;
771 773
                     }
772 774
                 }
773 775
             }
776
+                if (dirname) {
777
+                    free(dirname);
778
+                    dirname = NULL;
779
+                }
774 780
             if ((int)(prop_block[idx].prev) != -1) {
775 781
 	        if ((ret=ole2_list_push(&node_list, prop_block[idx].prev)) != CL_SUCCESS) {
776 782
 		    ole2_list_delete(&node_list);
... ...
@@ -783,8 +789,6 @@ ole2_walk_property_tree(ole2_header_t * hdr, const char *dir, int32_t prop_index
783 783
 		    return ret;
784 784
 		}
785 785
             }
786
-            if (dirname)
787
-                free(dirname);
788 786
             break;
789 787
         default:
790 788
             cli_dbgmsg("ERROR: unknown OLE2 entry type: %d\n", prop_block[idx].type);