summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2009-09-25 07:03:44 -0400
committerKarolin Seeger <kseeger@samba.org>2009-10-01 14:25:59 +0200
commit3ea466e1b8e69d59736bf5b4452769014b17f0f3 (patch)
tree3ef792abe5769160a993a8e5d6a304e57dd6abb1
parent9f8352264abca4e3a659a911c091a15b590b020f (diff)
downloadsamba-3ea466e1b8e69d59736bf5b4452769014b17f0f3.tar.gz
samba-3ea466e1b8e69d59736bf5b4452769014b17f0f3.tar.xz
samba-3ea466e1b8e69d59736bf5b4452769014b17f0f3.zip
mount.cifs: check access of credential files before opening
It's possible for an unprivileged user to pass a setuid mount.cifs a credential or password file to which he does not have access. This can cause mount.cifs to open the file on his behalf and possibly leak the info in the first few lines of the file. Check the access permissions of the file before opening it. Reported-by: Ronald Volgers <r.c.volgers@student.utwente.nl> Signed-off-by: Jeff Layton <jlayton@redhat.com> Acked-by: Steve French <sfrench@us.ibm.com> Part 1/2 of a fix for CVE-2009-2948. (cherry picked from commit b656deb5d7e97176c32b61b7659258846db16887)
-rw-r--r--source/client/mount.cifs.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/source/client/mount.cifs.c b/source/client/mount.cifs.c
index d05115b892d..cee9188f9f9 100644
--- a/source/client/mount.cifs.c
+++ b/source/client/mount.cifs.c
@@ -199,6 +199,11 @@ static int open_cred_file(char * file_name)
char * temp_val;
FILE * fs;
int i, length;
+
+ i = access(file_name, R_OK);
+ if (i)
+ return i;
+
fs = fopen(file_name,"r");
if(fs == NULL)
return errno;
@@ -321,6 +326,12 @@ static int get_password_from_file(int file_descript, char * filename)
}
if(filename != NULL) {
+ rc = access(filename, R_OK);
+ if (rc) {
+ fprintf(stderr, "mount.cifs failed: access check of %s failed: %s\n",
+ filename, strerror(errno));
+ exit(EX_SYSERR);
+ }
file_descript = open(filename, O_RDONLY);
if(file_descript < 0) {
printf("mount.cifs failed. %s attempting to open password file %s\n",