Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
c2ccdf15
Commit
c2ccdf15
authored
Sep 22, 2003
by
Steve French
Committed by
Steve French
Sep 22, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add missing mount option iocharset to cifs vfs
parent
19517de1
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
43 additions
and
83 deletions
+43
-83
fs/cifs/CHANGES
fs/cifs/CHANGES
+6
-0
fs/cifs/README
fs/cifs/README
+7
-0
fs/cifs/cifsfs.c
fs/cifs/cifsfs.c
+0
-1
fs/cifs/cifssmb.c
fs/cifs/cifssmb.c
+1
-0
fs/cifs/connect.c
fs/cifs/connect.c
+28
-0
fs/cifs/smbdes.c
fs/cifs/smbdes.c
+1
-39
fs/cifs/smbencrypt.c
fs/cifs/smbencrypt.c
+0
-43
No files found.
fs/cifs/CHANGES
View file @
c2ccdf15
Version 0.93
------------
Add missing mount options including iocharset. SMP fixes in write and open.
Fix errors in reconnecting after TCP session failure. Fix module unloading
of default nls codepage
Version 0.92
Version 0.92
------------
------------
Active smb transactions should never go negative (fix double FreeXid). Fix
Active smb transactions should never go negative (fix double FreeXid). Fix
...
...
fs/cifs/README
View file @
c2ccdf15
...
@@ -127,6 +127,13 @@ A partial list of the supported mount options follows:
...
@@ -127,6 +127,13 @@ A partial list of the supported mount options follows:
this overrides the default mode for directory inodes.
this overrides the default mode for directory inodes.
port attempt to contact the server on this tcp port, before
port attempt to contact the server on this tcp port, before
trying the usual ports (port 445, then 139).
trying the usual ports (port 445, then 139).
iocharset Codepage used to convert local path names to and from
Unicode. Unicode is used by default for network path
names if the server supports it. If iocharset is
not specified then the nls_default specified
during the local client kernel build will be used.
If server does not support Unicode, this parameter is
unused.
rsize default read size
rsize default read size
wsize default write size
wsize default write size
rw mount the network share read-write (note that the
rw mount the network share read-write (note that the
...
...
fs/cifs/cifsfs.c
View file @
c2ccdf15
...
@@ -81,7 +81,6 @@ cifs_read_super(struct super_block *sb, void *data,
...
@@ -81,7 +81,6 @@ cifs_read_super(struct super_block *sb, void *data,
cifs_sb
=
CIFS_SB
(
sb
);
cifs_sb
=
CIFS_SB
(
sb
);
if
(
cifs_sb
==
NULL
)
if
(
cifs_sb
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
cifs_sb
->
local_nls
=
load_nls_default
();
/* needed for ASCII cp to Unicode converts */
rc
=
cifs_mount
(
sb
,
cifs_sb
,
data
,
devname
);
rc
=
cifs_mount
(
sb
,
cifs_sb
,
data
,
devname
);
...
...
fs/cifs/cifssmb.c
View file @
c2ccdf15
...
@@ -62,6 +62,7 @@ smb_init(int smb_command, int wct, struct cifsTconInfo *tcon,
...
@@ -62,6 +62,7 @@ smb_init(int smb_command, int wct, struct cifsTconInfo *tcon,
if
(
!
rc
)
if
(
!
rc
)
reopen_files
(
tcon
,
nls_codepage
);
reopen_files
(
tcon
,
nls_codepage
);
}
}
unload_nls
(
nls_codepage
);
}
}
}
}
if
(
rc
)
if
(
rc
)
...
...
fs/cifs/connect.c
View file @
c2ccdf15
...
@@ -52,6 +52,7 @@ struct smb_vol {
...
@@ -52,6 +52,7 @@ struct smb_vol {
char
*
domainname
;
char
*
domainname
;
char
*
UNC
;
char
*
UNC
;
char
*
UNCip
;
char
*
UNCip
;
char
*
iocharset
;
/* local code page for mapping to and from Unicode */
char
*
source_rfc1001_name
;
/* netbios name of client */
char
*
source_rfc1001_name
;
/* netbios name of client */
uid_t
linux_uid
;
uid_t
linux_uid
;
gid_t
linux_gid
;
gid_t
linux_gid
;
...
@@ -434,6 +435,20 @@ parse_mount_options(char *options, const char *devname, struct smb_vol *vol)
...
@@ -434,6 +435,20 @@ parse_mount_options(char *options, const char *devname, struct smb_vol *vol)
printk
(
KERN_WARNING
"CIFS: domain name too long
\n
"
);
printk
(
KERN_WARNING
"CIFS: domain name too long
\n
"
);
return
1
;
return
1
;
}
}
}
else
if
(
strnicmp
(
data
,
"iocharset"
,
9
)
==
0
)
{
if
(
!
value
||
!*
value
)
{
printk
(
KERN_WARNING
"CIFS: invalid iocharset specified
\n
"
);
return
1
;
/* needs_arg; */
}
if
(
strnlen
(
value
,
65
)
<
65
)
{
if
(
strnicmp
(
value
,
"default"
,
7
))
vol
->
iocharset
=
value
;
/* if iocharset not set load_nls_default used by caller */
cFYI
(
1
,
(
"iocharset set to %s"
,
value
));
}
else
{
printk
(
KERN_WARNING
"CIFS: iocharset name too long.
\n
"
);
return
1
;
}
}
else
if
(
strnicmp
(
data
,
"uid"
,
3
)
==
0
)
{
}
else
if
(
strnicmp
(
data
,
"uid"
,
3
)
==
0
)
{
if
(
value
&&
*
value
)
{
if
(
value
&&
*
value
)
{
vol
->
linux_uid
=
vol
->
linux_uid
=
...
@@ -878,6 +893,19 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
...
@@ -878,6 +893,19 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb,
return
-
EINVAL
;
return
-
EINVAL
;
}
}
/* this is needed for ASCII cp to Unicode converts */
if
(
volume_info
.
iocharset
==
NULL
)
{
cifs_sb
->
local_nls
=
load_nls_default
();
/* load_nls_default can not return null */
}
else
{
cifs_sb
->
local_nls
=
load_nls
(
volume_info
.
iocharset
);
if
(
cifs_sb
->
local_nls
==
NULL
)
{
cERROR
(
1
,(
"CIFS mount error: iocharset %s not found"
,
volume_info
.
iocharset
));
FreeXid
(
xid
);
return
-
ELIBACC
;
}
}
existingCifsSes
=
existingCifsSes
=
find_tcp_session
(
sin_server
.
sin_addr
.
s_addr
,
find_tcp_session
(
sin_server
.
sin_addr
.
s_addr
,
volume_info
.
username
,
&
srvTcp
);
volume_info
.
username
,
&
srvTcp
);
...
...
fs/cifs/smbdes.c
View file @
c2ccdf15
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
SMB authentication protocol
SMB authentication protocol
Copyright (C) Andrew Tridgell 1998
Copyright (C) Andrew Tridgell 1998
Modified by Steve French (sfrench@us.ibm.com) 2002
Modified by Steve French (sfrench@us.ibm.com) 2002
,2003
This program is free software; you can redistribute it and/or modify
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
...
@@ -376,41 +376,3 @@ cred_hash3(unsigned char *out, unsigned char *in, unsigned char *key, int forw)
...
@@ -376,41 +376,3 @@ cred_hash3(unsigned char *out, unsigned char *in, unsigned char *key, int forw)
key2
[
0
]
=
key
[
7
];
key2
[
0
]
=
key
[
7
];
smbhash
(
out
+
8
,
in
+
8
,
key2
,
forw
);
smbhash
(
out
+
8
,
in
+
8
,
key2
,
forw
);
}
}
void
SamOEMhash
(
unsigned
char
*
data
,
unsigned
char
*
key
,
int
val
)
{
unsigned
char
s_box
[
256
];
unsigned
char
index_i
=
0
;
unsigned
char
index_j
=
0
;
unsigned
char
j
=
0
;
int
ind
;
for
(
ind
=
0
;
ind
<
256
;
ind
++
)
{
s_box
[
ind
]
=
(
unsigned
char
)
ind
;
}
for
(
ind
=
0
;
ind
<
256
;
ind
++
)
{
unsigned
char
tc
;
j
+=
(
s_box
[
ind
]
+
key
[
ind
%
16
]);
tc
=
s_box
[
ind
];
s_box
[
ind
]
=
s_box
[
j
];
s_box
[
j
]
=
tc
;
}
for
(
ind
=
0
;
ind
<
val
;
ind
++
)
{
unsigned
char
tc
;
unsigned
char
t
;
index_i
++
;
index_j
+=
s_box
[
index_i
];
tc
=
s_box
[
index_i
];
s_box
[
index_i
]
=
s_box
[
index_j
];
s_box
[
index_j
]
=
tc
;
t
=
s_box
[
index_i
]
+
s_box
[
index_j
];
data
[
ind
]
=
data
[
ind
]
^
s_box
[
t
];
}
}
fs/cifs/smbencrypt.c
View file @
c2ccdf15
...
@@ -63,7 +63,6 @@ void cred_hash1(unsigned char *out, unsigned char *in, unsigned char *key);
...
@@ -63,7 +63,6 @@ void cred_hash1(unsigned char *out, unsigned char *in, unsigned char *key);
void
cred_hash2
(
unsigned
char
*
out
,
unsigned
char
*
in
,
unsigned
char
*
key
);
void
cred_hash2
(
unsigned
char
*
out
,
unsigned
char
*
in
,
unsigned
char
*
key
);
void
cred_hash3
(
unsigned
char
*
out
,
unsigned
char
*
in
,
unsigned
char
*
key
,
void
cred_hash3
(
unsigned
char
*
out
,
unsigned
char
*
in
,
unsigned
char
*
key
,
int
forw
);
int
forw
);
void
SamOEMhash
(
unsigned
char
*
data
,
unsigned
char
*
key
,
int
val
);
/*The following definitions come from libsmb/smbencrypt.c */
/*The following definitions come from libsmb/smbencrypt.c */
...
@@ -75,8 +74,6 @@ void SMBOWFencrypt(unsigned char passwd[16], unsigned char *c8,
...
@@ -75,8 +74,6 @@ void SMBOWFencrypt(unsigned char passwd[16], unsigned char *c8,
void
NTLMSSPOWFencrypt
(
unsigned
char
passwd
[
8
],
void
NTLMSSPOWFencrypt
(
unsigned
char
passwd
[
8
],
unsigned
char
*
ntlmchalresp
,
unsigned
char
p24
[
24
]);
unsigned
char
*
ntlmchalresp
,
unsigned
char
p24
[
24
]);
void
SMBNTencrypt
(
unsigned
char
*
passwd
,
unsigned
char
*
c8
,
unsigned
char
*
p24
);
void
SMBNTencrypt
(
unsigned
char
*
passwd
,
unsigned
char
*
c8
,
unsigned
char
*
p24
);
int
make_oem_passwd_hash
(
char
data
[
516
],
const
char
*
passwd
,
unsigned
char
old_pw_hash
[
16
],
int
unicode
);
int
decode_pw_buffer
(
char
in_buffer
[
516
],
char
*
new_pwrd
,
int
decode_pw_buffer
(
char
in_buffer
[
516
],
char
*
new_pwrd
,
int
new_pwrd_size
,
__u32
*
new_pw_len
);
int
new_pwrd_size
,
__u32
*
new_pw_len
);
...
@@ -346,46 +343,6 @@ static struct data_blob LMv2_generate_response(const unsigned char ntlm_v2_hash[
...
@@ -346,46 +343,6 @@ static struct data_blob LMv2_generate_response(const unsigned char ntlm_v2_hash[
return
final_response
;
return
final_response
;
}
}
int
make_oem_passwd_hash
(
char
data
[
516
],
const
char
*
passwd
,
unsigned
char
old_pw_hash
[
16
],
int
unicode
)
{
int
new_pw_len
=
strlen
(
passwd
)
*
(
unicode
?
2
:
1
);
if
(
new_pw_len
>
512
)
{
cERROR
(
1
,
(
"CIFS make_oem_passwd_hash: new password is too long."
));
return
FALSE
;
}
/*
* Now setup the data area.
* We need to generate a random fill
* for this area to make it harder to
* decrypt. JRA.
*
*/
get_random_bytes
(
data
,
sizeof
(
data
));
if
(
unicode
)
{
/* Note that passwd should be in DOS oem character set. */
/* dos_struni2( &data[512 - new_pw_len], passwd, 512); */
cifs_strtoUCS
((
wchar_t
*
)
&
data
[
512
-
new_pw_len
],
passwd
,
512
,
/* struct nls_table */
load_nls_default
());
/* BB call unload_nls now or get nls differntly */
}
else
{
/* Note that passwd should be in DOS oem character set. */
strcpy
(
&
data
[
512
-
new_pw_len
],
passwd
);
}
SIVAL
(
data
,
512
,
new_pw_len
);
#ifdef DEBUG_PASSWORD
DEBUG
(
100
,
(
"make_oem_passwd_hash
\n
"
));
dump_data
(
100
,
data
,
516
);
#endif
SamOEMhash
((
unsigned
char
*
)
data
,
(
unsigned
char
*
)
old_pw_hash
,
516
);
return
TRUE
;
}
void
void
SMBsesskeygen_ntv2
(
const
unsigned
char
kr
[
16
],
SMBsesskeygen_ntv2
(
const
unsigned
char
kr
[
16
],
const
unsigned
char
*
nt_resp
,
__u8
sess_key
[
16
])
const
unsigned
char
*
nt_resp
,
__u8
sess_key
[
16
])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment