Browse Source

libdl: end must be bigger than start

Waldemar Brodkorb 6 years ago
parent
commit
d86bd35298
1 changed files with 2 additions and 1 deletions
  1. 2 1
      ldso/libdl/libdl.c

+ 2 - 1
ldso/libdl/libdl.c

@@ -967,7 +967,8 @@ static int do_dlclose(void *vhandle, int need_fini)
 			end = (end + ADDR_ALIGN) & PAGE_ALIGN;
 			start = start & ~ADDR_ALIGN;
 			_dl_if_debug_print("unmapping: %s start: '%p' end: '%p'\n", tpnt->libname, start, end);
-			DL_LIB_UNMAP (tpnt, end - start);
+			if (end > start)
+			  DL_LIB_UNMAP (tpnt, end - start);
 			/* Free elements in RTLD_LOCAL scope list */
 			for (runp = tpnt->rtld_local; runp; runp = tmp) {
 				tmp = runp->next;