瀏覽代碼

fix rpath string memory leak on failed dlopen

when dlopen fails, all partially-loaded libraries need to be unmapped
and freed. any of these libraries using an rpath with $ORIGIN
expansion may have an allocated string for the expanded rpath;
previously, this string was not freed when freeing the library data
structures.
Rich Felker 10 年之前
父節點
當前提交
077096259d
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      src/ldso/dynlink.c

+ 2 - 0
src/ldso/dynlink.c

@@ -1413,6 +1413,8 @@ void *dlopen(const char *file, int mode)
 				free(p->td_index);
 				p->td_index = tmp;
 			}
+			if (p->rpath != p->rpath_orig)
+				free(p->rpath);
 			free(p->deps);
 			free(p);
 		}