Procházet zdrojové kódy

fix memory leak on failure in realpath

Rich Felker před 14 roky
rodič
revize
d43ff110bc
1 změnil soubory, kde provedl 4 přidání a 4 odebrání
  1. 4 4
      src/misc/realpath.c

+ 4 - 4
src/misc/realpath.c

@@ -19,16 +19,16 @@ char *realpath(const char *filename, char *resolved)
 		return 0;
 	}
 
+	fd = open(filename, O_RDONLY|O_NONBLOCK);
+	if (fd < 0) return 0;
+	snprintf(buf, sizeof buf, "/proc/self/fd/%d", fd);
+
 	if (!resolved) {
 		alloc = 1;
 		resolved = malloc(PATH_MAX);
 		if (!resolved) return 0;
 	}
 
-	fd = open(filename, O_RDONLY|O_NONBLOCK);
-	if (fd < 0) return 0;
-	snprintf(buf, sizeof buf, "/proc/self/fd/%d", fd);
-
 	r = readlink(buf, resolved, PATH_MAX-1);
 	if (r < 0) goto err;
 	resolved[r] = 0;