d2e1ce4
From 82cd789df0f022eb6f3d28646e7a61d1d0715805 Mon Sep 17 00:00:00 2001
d2e1ce4
From: Michal Sekletar <msekleta@redhat.com>
d2e1ce4
Date: Mon, 7 Apr 2014 12:23:36 +0200
d2e1ce4
Subject: [PATCH 12/27] pppd: we don't want to accidentally leak fds
d2e1ce4
d2e1ce4
---
d2e1ce4
 pppd/auth.c      | 20 ++++++++++----------
d2e1ce4
 pppd/options.c   |  2 +-
d2e1ce4
 pppd/sys-linux.c |  4 ++--
d2e1ce4
 3 files changed, 13 insertions(+), 13 deletions(-)
d2e1ce4
d2e1ce4
diff --git a/pppd/auth.c b/pppd/auth.c
d2e1ce4
index 4271af6..9e957fa 100644
d2e1ce4
--- a/pppd/auth.c
d2e1ce4
+++ b/pppd/auth.c
d2e1ce4
@@ -428,7 +428,7 @@ setupapfile(argv)
6d73752
         free(fname);
d2e1ce4
 	return 0;
d2e1ce4
     }
d2e1ce4
-    ufile = fopen(fname, "r");
d2e1ce4
+    ufile = fopen(fname, "re");
d2e1ce4
     if (seteuid(euid) == -1)
d2e1ce4
 	fatal("unable to regain privileges: %m");
d2e1ce4
     if (ufile == NULL) {
d2e1ce4
@@ -1413,7 +1413,7 @@ check_passwd(unit, auser, userlen, apasswd, passwdlen, msg)
d2e1ce4
     filename = _PATH_UPAPFILE;
d2e1ce4
     addrs = opts = NULL;
d2e1ce4
     ret = UPAP_AUTHNAK;
d2e1ce4
-    f = fopen(filename, "r");
d2e1ce4
+    f = fopen(filename, "re");
d2e1ce4
     if (f == NULL) {
d2e1ce4
 	error("Can't open PAP password file %s: %m", filename);
d2e1ce4
 
d2e1ce4
@@ -1512,7 +1512,7 @@ null_login(unit)
d2e1ce4
     if (ret <= 0) {
d2e1ce4
 	filename = _PATH_UPAPFILE;
d2e1ce4
 	addrs = NULL;
d2e1ce4
-	f = fopen(filename, "r");
d2e1ce4
+	f = fopen(filename, "re");
d2e1ce4
 	if (f == NULL)
d2e1ce4
 	    return 0;
d2e1ce4
 	check_access(f, filename);
d2e1ce4
@@ -1559,7 +1559,7 @@ get_pap_passwd(passwd)
d2e1ce4
     }
d2e1ce4
 
d2e1ce4
     filename = _PATH_UPAPFILE;
d2e1ce4
-    f = fopen(filename, "r");
d2e1ce4
+    f = fopen(filename, "re");
d2e1ce4
     if (f == NULL)
d2e1ce4
 	return 0;
d2e1ce4
     check_access(f, filename);
d2e1ce4
@@ -1597,7 +1597,7 @@ have_pap_secret(lacks_ipp)
d2e1ce4
     }
d2e1ce4
 
d2e1ce4
     filename = _PATH_UPAPFILE;
d2e1ce4
-    f = fopen(filename, "r");
d2e1ce4
+    f = fopen(filename, "re");
d2e1ce4
     if (f == NULL)
d2e1ce4
 	return 0;
d2e1ce4
 
d2e1ce4
@@ -1642,7 +1642,7 @@ have_chap_secret(client, server, need_ip, lacks_ipp)
d2e1ce4
     }
d2e1ce4
 
d2e1ce4
     filename = _PATH_CHAPFILE;
d2e1ce4
-    f = fopen(filename, "r");
d2e1ce4
+    f = fopen(filename, "re");
d2e1ce4
     if (f == NULL)
d2e1ce4
 	return 0;
d2e1ce4
 
d2e1ce4
@@ -1684,7 +1684,7 @@ have_srp_secret(client, server, need_ip, lacks_ipp)
d2e1ce4
     struct wordlist *addrs;
d2e1ce4
 
d2e1ce4
     filename = _PATH_SRPFILE;
d2e1ce4
-    f = fopen(filename, "r");
d2e1ce4
+    f = fopen(filename, "re");
d2e1ce4
     if (f == NULL)
d2e1ce4
 	return 0;
d2e1ce4
 
d2e1ce4
@@ -1740,7 +1740,7 @@ get_secret(unit, client, server, secret, secret_len, am_server)
d2e1ce4
 	addrs = NULL;
d2e1ce4
 	secbuf[0] = 0;
d2e1ce4
 
d2e1ce4
-	f = fopen(filename, "r");
d2e1ce4
+	f = fopen(filename, "re");
d2e1ce4
 	if (f == NULL) {
d2e1ce4
 	    error("Can't open chap secret file %s: %m", filename);
d2e1ce4
 	    return 0;
d2e1ce4
@@ -1797,7 +1797,7 @@ get_srp_secret(unit, client, server, secret, am_server)
d2e1ce4
 	filename = _PATH_SRPFILE;
d2e1ce4
 	addrs = NULL;
d2e1ce4
 
d2e1ce4
-	fp = fopen(filename, "r");
d2e1ce4
+	fp = fopen(filename, "re");
d2e1ce4
 	if (fp == NULL) {
d2e1ce4
 	    error("Can't open srp secret file %s: %m", filename);
d2e1ce4
 	    return 0;
d2e1ce4
@@ -2203,7 +2203,7 @@ scan_authfile(f, client, server, secret, addrs, opts, filename, flags)
d2e1ce4
 	     */
d2e1ce4
 	    if (word[0] == '@' && word[1] == '/') {
d2e1ce4
 		strlcpy(atfile, word+1, sizeof(atfile));
d2e1ce4
-		if ((sf = fopen(atfile, "r")) == NULL) {
d2e1ce4
+		if ((sf = fopen(atfile, "re")) == NULL) {
d2e1ce4
 		    warn("can't open indirect secret file %s", atfile);
d2e1ce4
 		    continue;
d2e1ce4
 		}
d2e1ce4
diff --git a/pppd/options.c b/pppd/options.c
d2e1ce4
index 45fa742..1d754ae 100644
d2e1ce4
--- a/pppd/options.c
d2e1ce4
+++ b/pppd/options.c
d2e1ce4
@@ -427,7 +427,7 @@ options_from_file(filename, must_exist, check_prot, priv)
d2e1ce4
 	option_error("unable to drop privileges to open %s: %m", filename);
d2e1ce4
 	return 0;
d2e1ce4
     }
d2e1ce4
-    f = fopen(filename, "r");
d2e1ce4
+    f = fopen(filename, "re");
d2e1ce4
     err = errno;
d2e1ce4
     if (check_prot && seteuid(euid) == -1)
d2e1ce4
 	fatal("unable to regain privileges");
d2e1ce4
diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
d2e1ce4
index 72a7727..8a12fa0 100644
d2e1ce4
--- a/pppd/sys-linux.c
d2e1ce4
+++ b/pppd/sys-linux.c
d2e1ce4
@@ -1412,7 +1412,7 @@ static char *path_to_procfs(const char *tail)
d2e1ce4
 	/* Default the mount location of /proc */
d2e1ce4
 	strlcpy (proc_path, "/proc", sizeof(proc_path));
d2e1ce4
 	proc_path_len = 5;
d2e1ce4
-	fp = fopen(MOUNTED, "r");
d2e1ce4
+	fp = fopen(MOUNTED, "re");
d2e1ce4
 	if (fp != NULL) {
d2e1ce4
 	    while ((mntent = getmntent(fp)) != NULL) {
d2e1ce4
 		if (strcmp(mntent->mnt_type, MNTTYPE_IGNORE) == 0)
d2e1ce4
@@ -1472,7 +1472,7 @@ static int open_route_table (void)
d2e1ce4
     close_route_table();
d2e1ce4
 
d2e1ce4
     path = path_to_procfs("/net/route");
d2e1ce4
-    route_fd = fopen (path, "r");
d2e1ce4
+    route_fd = fopen (path, "re");
d2e1ce4
     if (route_fd == NULL) {
d2e1ce4
 	error("can't open routing table %s: %m", path);
d2e1ce4
 	return 0;
d2e1ce4
-- 
d2e1ce4
1.8.3.1
d2e1ce4