diff options
author | Steve French <sfrench@us.ibm.com> | 2006-06-27 02:28:30 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2006-06-27 02:28:30 -0400 |
commit | 750d1151a6c95ef9b9a188bb7cff6b80ee30da17 (patch) | |
tree | 1a69d1e42ffebefa13842372c97d505e37159f7e /fs/cifs/connect.c | |
parent | 124a27fe32398a69d16bae374aeb17ad67a0ebbf (diff) |
[CIFS] Fix allocation of buffers for new session setup routine to allow
longer user and domain names and allow passing sec options on mount
Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r-- | fs/cifs/connect.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index c0f98ddea88c..876eb9ef85fe 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
@@ -915,32 +915,32 @@ cifs_parse_mount_options(char *options, const char *devname,struct smb_vol *vol) | |||
915 | cERROR(1,("no security value specified")); | 915 | cERROR(1,("no security value specified")); |
916 | continue; | 916 | continue; |
917 | } else if (strnicmp(value, "krb5i", 5) == 0) { | 917 | } else if (strnicmp(value, "krb5i", 5) == 0) { |
918 | vol->secFlg = CIFSSEC_MAY_KRB5 | | 918 | vol->secFlg |= CIFSSEC_MAY_KRB5 | |
919 | CIFSSEC_MUST_SIGN; | 919 | CIFSSEC_MUST_SIGN; |
920 | } else if (strnicmp(value, "krb5p", 5) == 0) { | 920 | } else if (strnicmp(value, "krb5p", 5) == 0) { |
921 | /* vol->secFlg = CIFSSEC_MUST_SEAL | | 921 | /* vol->secFlg |= CIFSSEC_MUST_SEAL | |
922 | CIFSSEC_MAY_KRB5; */ | 922 | CIFSSEC_MAY_KRB5; */ |
923 | cERROR(1,("Krb5 cifs privacy not supported")); | 923 | cERROR(1,("Krb5 cifs privacy not supported")); |
924 | return 1; | 924 | return 1; |
925 | } else if (strnicmp(value, "krb5", 4) == 0) { | 925 | } else if (strnicmp(value, "krb5", 4) == 0) { |
926 | vol->secFlg = CIFSSEC_MAY_KRB5; | 926 | vol->secFlg |= CIFSSEC_MAY_KRB5; |
927 | } else if (strnicmp(value, "ntlmv2i", 7) == 0) { | 927 | } else if (strnicmp(value, "ntlmv2i", 7) == 0) { |
928 | vol->secFlg = CIFSSEC_MAY_NTLMV2 | | 928 | vol->secFlg |= CIFSSEC_MAY_NTLMV2 | |
929 | CIFSSEC_MUST_SIGN; | 929 | CIFSSEC_MUST_SIGN; |
930 | } else if (strnicmp(value, "ntlmv2", 6) == 0) { | 930 | } else if (strnicmp(value, "ntlmv2", 6) == 0) { |
931 | vol->secFlg = CIFSSEC_MAY_NTLMV2; | 931 | vol->secFlg |= CIFSSEC_MAY_NTLMV2; |
932 | } else if (strnicmp(value, "ntlmi", 5) == 0) { | 932 | } else if (strnicmp(value, "ntlmi", 5) == 0) { |
933 | vol->secFlg = CIFSSEC_MAY_NTLM | | 933 | vol->secFlg |= CIFSSEC_MAY_NTLM | |
934 | CIFSSEC_MUST_SIGN; | 934 | CIFSSEC_MUST_SIGN; |
935 | } else if (strnicmp(value, "ntlm", 4) == 0) { | 935 | } else if (strnicmp(value, "ntlm", 4) == 0) { |
936 | /* ntlm is default so can be turned off too */ | 936 | /* ntlm is default so can be turned off too */ |
937 | vol->secFlg = CIFSSEC_MAY_NTLM; | 937 | vol->secFlg |= CIFSSEC_MAY_NTLM; |
938 | } else if (strnicmp(value, "nontlm", 6) == 0) { | 938 | } else if (strnicmp(value, "nontlm", 6) == 0) { |
939 | /* BB is there a better way to do this? */ | 939 | /* BB is there a better way to do this? */ |
940 | vol->secFlg = CIFSSEC_MAY_NTLMV2; | 940 | vol->secFlg |= CIFSSEC_MAY_NTLMV2; |
941 | #ifdef CONFIG_CIFS_WEAK_PW_HASH | 941 | #ifdef CONFIG_CIFS_WEAK_PW_HASH |
942 | } else if (strnicmp(value, "lanman", 6) == 0) { | 942 | } else if (strnicmp(value, "lanman", 6) == 0) { |
943 | vol->secFlg = CIFSSEC_MAY_LANMAN; | 943 | vol->secFlg |= CIFSSEC_MAY_LANMAN; |
944 | #endif | 944 | #endif |
945 | } else if (strnicmp(value, "none", 4) == 0) { | 945 | } else if (strnicmp(value, "none", 4) == 0) { |
946 | vol->nullauth = 1; | 946 | vol->nullauth = 1; |
@@ -1173,6 +1173,10 @@ cifs_parse_mount_options(char *options, const char *devname,struct smb_vol *vol) | |||
1173 | vol->no_psx_acl = 0; | 1173 | vol->no_psx_acl = 0; |
1174 | } else if (strnicmp(data, "noacl",5) == 0) { | 1174 | } else if (strnicmp(data, "noacl",5) == 0) { |
1175 | vol->no_psx_acl = 1; | 1175 | vol->no_psx_acl = 1; |
1176 | } else if (strnicmp(data, "sign",4) == 0) { | ||
1177 | vol->secFlg |= CIFSSEC_MUST_SIGN; | ||
1178 | /* } else if (strnicmp(data, "seal",4) == 0) { | ||
1179 | vol->secFlg |= CIFSSEC_MUST_SEAL; */ | ||
1176 | } else if (strnicmp(data, "direct",6) == 0) { | 1180 | } else if (strnicmp(data, "direct",6) == 0) { |
1177 | vol->direct_io = 1; | 1181 | vol->direct_io = 1; |
1178 | } else if (strnicmp(data, "forcedirectio",13) == 0) { | 1182 | } else if (strnicmp(data, "forcedirectio",13) == 0) { |
@@ -1776,6 +1780,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, | |||
1776 | volume_info.domainname); | 1780 | volume_info.domainname); |
1777 | } | 1781 | } |
1778 | pSesInfo->linux_uid = volume_info.linux_uid; | 1782 | pSesInfo->linux_uid = volume_info.linux_uid; |
1783 | pSesInfo->overrideSecFlg = volume_info.secFlg; | ||
1779 | down(&pSesInfo->sesSem); | 1784 | down(&pSesInfo->sesSem); |
1780 | /* BB FIXME need to pass vol->secFlgs BB */ | 1785 | /* BB FIXME need to pass vol->secFlgs BB */ |
1781 | rc = cifs_setup_session(xid,pSesInfo, cifs_sb->local_nls); | 1786 | rc = cifs_setup_session(xid,pSesInfo, cifs_sb->local_nls); |