Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix a memory leak in glob_for_cachedir()
Covscan complains: Error: RESOURCE_LEAK (CWE-772): [#def1] [important] libdnf-0.73.1/libdnf/hy-iutil.cpp:100:5: alloc_arg: "wordexp" allocates memory that is stored into "word_vector.we_wordv". libdnf-0.73.1/libdnf/hy-iutil.cpp:102:9: leaked_storage: Variable "word_vector" going out of scope leaks the storage "word_vector.we_wordv" points to. # 100| if (wordexp(p, &word_vector, 0)) { # 101| g_free(p); # 102|-> return ret; # 103| } # 104| for (guint i = 0; i < word_vector.we_wordc; ++i) { The issue is that Covscan model thinks that word_vector should be freed after failing wordexp(). glibc's manual does not explain whether it is or isn't necessary. However, POSIX manual mentions that the memory is valid on WRDE_NOSPACE (not enough memory) error. Reading glibc sources confirms that wordexp() on any error except of WRDE_NOSPACE cleans up and returns original, intact word_vector. Therefore I recognize the missing wordfree() call as an error and this patch fixed it.
- Loading branch information