فهرست منبع

in sem_open, don't leak vm mapping if fstat fails

fstat should not fail under normal circumstances, so this fix is
mostly theoretical.
Rich Felker 11 سال پیش
والد
کامیت
52d4444f8e
1فایلهای تغییر یافته به همراه2 افزوده شده و 2 حذف شده
  1. 2 2
      src/thread/sem_open.c

+ 2 - 2
src/thread/sem_open.c

@@ -82,8 +82,8 @@ sem_t *sem_open(const char *name, int flags, ...)
 		if (flags != (O_CREAT|O_EXCL)) {
 			fd = open(name, FLAGS);
 			if (fd >= 0) {
-				if ((map = mmap(0, sizeof(sem_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED ||
-				    fstat(fd, &st) < 0) {
+				if (fstat(fd, &st) < 0 ||
+				    (map = mmap(0, sizeof(sem_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) {
 					close(fd);
 					goto fail;
 				}