[BUG] acl: fd leak when reading patterns from file

The fd is not closed after patterns have successfully been read from
a file. Bug reported by Bertrand Jacquin. Should be backported to 1.4.
diff --git a/src/acl.c b/src/acl.c
index c8a5a88..fcfbf9f 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -1059,6 +1059,7 @@
 	const char *args[2];
 	struct acl_pattern *pattern;
 	int opaque;
+	int ret = 0;
 
 	file = fopen(filename, "r");
 	if (!file)
@@ -1119,15 +1120,14 @@
 			pattern = NULL; /* get a new one */
 		}
 	}
-	if (pattern)
-		free_pattern(pattern);
-	return 1;
+
+	ret = 1; /* success */
 
  out_free_pattern:
 	free_pattern(pattern);
  out_close:
 	fclose(file);
-	return 0;
+	return ret;
 }
 
 /* Parse an ACL expression starting at <args>[0], and return it.