Re: [PATCH 02/17] mark newly opened fds as FD_CLOEXEC (close on exec)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Friday 2011-04-01 06:27, Maciej Åenczykowski wrote:

>From: Maciej Åenczykowski <maze@xxxxxxxxxx>
>
>(This is iptables-1.4.3.1-cloexec.patch from RedHat iptables.src.rpm)

Redhat still has not given a reason as to why this is needed.


>@@ -49,7 +49,7 @@ static void load_realms(void)
> 	int id;
> 	struct realmname *oldnm = NULL, *newnm = NULL;
> 
>-	fil = fopen(rfnm, "r");
>+	fil = fopen(rfnm, "re");
> 	if (!fil) {
> 		rdberr = 1;
> 		return;
>diff --git a/ip6tables-restore.c b/ip6tables-restore.c
>index e9a130f..10c3acf 100644
>--- a/ip6tables-restore.c
>+++ b/ip6tables-restore.c
>@@ -168,7 +168,7 @@ int main(int argc, char *argv[])
> 	}
> 
> 	if (optind == argc - 1) {
>-		in = fopen(argv[optind], "r");
>+		in = fopen(argv[optind], "re");
> 		if (!in) {
> 			fprintf(stderr, "Can't open %s: %s\n", argv[optind],
> 				strerror(errno));
>diff --git a/ip6tables-save.c b/ip6tables-save.c
>index dc189e9..c3b8ec0 100644
>--- a/ip6tables-save.c
>+++ b/ip6tables-save.c
>@@ -41,7 +41,7 @@ static int for_each_table(int (*func)(const char *tablename))
> 	FILE *procfile = NULL;
> 	char tablename[IP6T_TABLE_MAXNAMELEN+1];
> 
>-	procfile = fopen("/proc/net/ip6_tables_names", "r");
>+	procfile = fopen("/proc/net/ip6_tables_names", "re");
> 	if (!procfile)
> 		return ret;
> 
>diff --git a/iptables-restore.c b/iptables-restore.c
>index 31ce52b..c2cc58c 100644
>--- a/iptables-restore.c
>+++ b/iptables-restore.c
>@@ -174,7 +174,7 @@ main(int argc, char *argv[])
> 	}
> 
> 	if (optind == argc - 1) {
>-		in = fopen(argv[optind], "r");
>+		in = fopen(argv[optind], "re");
> 		if (!in) {
> 			fprintf(stderr, "Can't open %s: %s\n", argv[optind],
> 				strerror(errno));
>diff --git a/iptables-save.c b/iptables-save.c
>index 3bcf422..3e3ec43 100644
>--- a/iptables-save.c
>+++ b/iptables-save.c
>@@ -39,7 +39,7 @@ static int for_each_table(int (*func)(const char *tablename))
> 	FILE *procfile = NULL;
> 	char tablename[IPT_TABLE_MAXNAMELEN+1];
> 
>-	procfile = fopen("/proc/net/ip_tables_names", "r");
>+	procfile = fopen("/proc/net/ip_tables_names", "re");
> 	if (!procfile)
> 		return ret;
> 
>diff --git a/iptables-xml.c b/iptables-xml.c
>index 8d67056..57c7486 100644
>--- a/iptables-xml.c
>+++ b/iptables-xml.c
>@@ -651,7 +651,7 @@ main(int argc, char *argv[])
> 	}
> 
> 	if (optind == argc - 1) {
>-		in = fopen(argv[optind], "r");
>+		in = fopen(argv[optind], "re");
> 		if (!in) {
> 			fprintf(stderr, "Can't open %s: %s", argv[optind],
> 				strerror(errno));
>diff --git a/xtables.c b/xtables.c
>index 2f00e39..352963f 100644
>--- a/xtables.c
>+++ b/xtables.c
>@@ -300,6 +300,11 @@ static char *get_modprobe(void)
> 	procfile = open(PROC_SYS_MODPROBE, O_RDONLY);
> 	if (procfile < 0)
> 		return NULL;
>+	if (fcntl(procfile, F_SETFD, FD_CLOEXEC) == -1) {
>+		fprintf(stderr, "Could not set close on exec: %s\n",
>+			strerror(errno));
>+		exit(1);
>+	}
> 
> 	ret = malloc(PROCFILE_BUFSIZ);
> 	if (ret) {
>@@ -697,6 +702,12 @@ static int compatible_revision(const char *name, uint8_t revision, int opt)
> 		exit(1);
> 	}
> 
>+	if (fcntl(sockfd, F_SETFD, FD_CLOEXEC) == -1) {
>+		fprintf(stderr, "Could not set close on exec: %s\n",
>+			strerror(errno));
>+		exit(1);
>+	}
>+
> 	xtables_load_ko(xtables_modprobe_program, true);
> 
> 	strcpy(rev.name, name);
>-- 
>1.7.3.1
>
>--
>To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
>the body of a message to majordomo@xxxxxxxxxxxxxxx
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux