Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
af6f4612
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
af6f4612
编写于
10月 16, 2007
作者:
S
Steve French
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[CIFS] Fix some endianness problems in new acl code
Signed-off-by:
N
Steve French
<
sfrench@us.ibm.com
>
上级
016ec75f
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
26 addition
and
27 deletion
+26
-27
fs/cifs/cifsacl.c
fs/cifs/cifsacl.c
+14
-14
fs/cifs/cifsacl.h
fs/cifs/cifsacl.h
+11
-12
fs/cifs/cifssmb.c
fs/cifs/cifssmb.c
+1
-1
未找到文件。
fs/cifs/cifsacl.c
浏览文件 @
af6f4612
...
...
@@ -31,7 +31,7 @@
#ifdef CONFIG_CIFS_EXPERIMENTAL
struct
cifs_wksid
wksidarr
[
NUM_WK_SIDS
]
=
{
st
atic
st
ruct
cifs_wksid
wksidarr
[
NUM_WK_SIDS
]
=
{
{{
1
,
0
,
{
0
,
0
,
0
,
0
,
0
,
0
},
{
0
,
0
,
0
,
0
,
0
}
},
"null user"
},
{{
1
,
1
,
{
0
,
0
,
0
,
0
,
0
,
1
},
{
0
,
0
,
0
,
0
,
0
}
},
"nobody"
},
{{
1
,
1
,
{
0
,
0
,
0
,
0
,
0
,
5
},
{
11
,
0
,
0
,
0
,
0
}
},
"net-users"
},
...
...
@@ -192,14 +192,15 @@ static void parse_dacl(struct cifs_acl *pdacl, char *end_of_acl)
/* BB need to add parm so we can store the SID BB */
/* validate that we do not go past end of acl */
if
(
end_of_acl
<
(
char
*
)
pdacl
+
pdacl
->
size
)
{
if
(
end_of_acl
<
(
char
*
)
pdacl
+
le16_to_cpu
(
pdacl
->
size
)
)
{
cERROR
(
1
,
(
"ACL too small to parse DACL"
));
return
;
}
#ifdef CONFIG_CIFS_DEBUG2
cFYI
(
1
,
(
"DACL revision %d size %d num aces %d"
,
pdacl
->
revision
,
pdacl
->
size
,
pdacl
->
num_aces
));
le16_to_cpu
(
pdacl
->
revision
),
le16_to_cpu
(
pdacl
->
size
),
le32_to_cpu
(
pdacl
->
num_aces
)));
#endif
acl_base
=
(
char
*
)
pdacl
;
...
...
@@ -255,7 +256,6 @@ static void parse_dacl(struct cifs_acl *pdacl, char *end_of_acl)
static
int
parse_sid
(
struct
cifs_sid
*
psid
,
char
*
end_of_acl
)
{
int
num_subauth
;
/* BB need to add parm so we can store the SID BB */
...
...
@@ -265,14 +265,13 @@ static int parse_sid(struct cifs_sid *psid, char *end_of_acl)
return
-
EINVAL
;
}
num_subauth
=
cpu_to_le32
(
psid
->
num_subauth
);
if
(
num_subauth
)
{
if
(
psid
->
num_subauth
)
{
#ifdef CONFIG_CIFS_DEBUG2
int
i
;
cFYI
(
1
,
(
"SID revision %d num_auth %d First subauth 0x%x"
,
psid
->
revision
,
psid
->
num_subauth
,
psid
->
sub_auth
[
0
]));
for
(
i
=
0
;
i
<
num_subauth
;
++
i
)
{
for
(
i
=
0
;
i
<
psid
->
num_subauth
;
i
++
)
{
cFYI
(
1
,
(
"SID sub_auth[%d]: 0x%x "
,
i
,
le32_to_cpu
(
psid
->
sub_auth
[
i
])));
}
...
...
@@ -280,7 +279,7 @@ static int parse_sid(struct cifs_sid *psid, char *end_of_acl)
/* BB add length check to make sure that we do not have huge
num auths and therefore go off the end */
cFYI
(
1
,
(
"RID 0x%x"
,
le32_to_cpu
(
psid
->
sub_auth
[
num_subauth
-
1
])));
le32_to_cpu
(
psid
->
sub_auth
[
psid
->
num_subauth
-
1
])));
#endif
}
...
...
@@ -297,17 +296,18 @@ int parse_sec_desc(struct cifs_ntsd *pntsd, int acl_len)
char
*
end_of_acl
=
((
char
*
)
pntsd
)
+
acl_len
;
owner_sid_ptr
=
(
struct
cifs_sid
*
)((
char
*
)
pntsd
+
cpu_to_le32
(
pntsd
->
osidoffset
));
le32_to_cpu
(
pntsd
->
osidoffset
));
group_sid_ptr
=
(
struct
cifs_sid
*
)((
char
*
)
pntsd
+
cpu_to_le32
(
pntsd
->
gsidoffset
));
le32_to_cpu
(
pntsd
->
gsidoffset
));
dacl_ptr
=
(
struct
cifs_acl
*
)((
char
*
)
pntsd
+
cpu_to_le32
(
pntsd
->
dacloffset
));
le32_to_cpu
(
pntsd
->
dacloffset
));
#ifdef CONFIG_CIFS_DEBUG2
cFYI
(
1
,
(
"revision %d type 0x%x ooffset 0x%x goffset 0x%x "
"sacloffset 0x%x dacloffset 0x%x"
,
pntsd
->
revision
,
pntsd
->
type
,
pntsd
->
osidoffset
,
pntsd
->
gsidoffset
,
pntsd
->
sacloffset
,
pntsd
->
dacloffset
));
pntsd
->
revision
,
pntsd
->
type
,
le32_to_cpu
(
pntsd
->
osidoffset
),
le32_to_cpu
(
pntsd
->
gsidoffset
),
le32_to_cpu
(
pntsd
->
sacloffset
),
le32_to_cpu
(
pntsd
->
dacloffset
));
#endif
rc
=
parse_sid
(
owner_sid_ptr
,
end_of_acl
);
if
(
rc
)
...
...
fs/cifs/cifsacl.h
浏览文件 @
af6f4612
...
...
@@ -27,25 +27,25 @@
#define SIDNAMELENGTH 20
/* long enough for the ones we care about */
struct
cifs_ntsd
{
__
u
16
revision
;
/* revision level */
__
u
16
type
;
__
u
32
osidoffset
;
__
u
32
gsidoffset
;
__
u
32
sacloffset
;
__
u
32
dacloffset
;
__
le
16
revision
;
/* revision level */
__
le
16
type
;
__
le
32
osidoffset
;
__
le
32
gsidoffset
;
__
le
32
sacloffset
;
__
le
32
dacloffset
;
}
__attribute__
((
packed
));
struct
cifs_sid
{
__u8
revision
;
/* revision level */
__u8
num_subauth
;
__u8
authority
[
6
];
__
u32
sub_auth
[
5
];
/* sub_auth[num_subauth]
*/
__
le32
sub_auth
[
5
];
/* sub_auth[num_subauth] */
/* BB FIXME endianness BB
*/
}
__attribute__
((
packed
));
struct
cifs_acl
{
__
u
16
revision
;
/* revision level */
__
u
16
size
;
__
u
32
num_aces
;
__
le
16
revision
;
/* revision level */
__
le
16
size
;
__
le
32
num_aces
;
}
__attribute__
((
packed
));
struct
cifs_ntace
{
/* first part of ACE which contains perms */
...
...
@@ -59,7 +59,7 @@ struct cifs_ace { /* last part of ACE which includes user info */
__u8
revision
;
/* revision level */
__u8
num_subauth
;
__u8
authority
[
6
];
__
u
32
sub_auth
[
5
];
__
le
32
sub_auth
[
5
];
}
__attribute__
((
packed
));
struct
cifs_wksid
{
...
...
@@ -69,7 +69,6 @@ struct cifs_wksid {
#ifdef CONFIG_CIFS_EXPERIMENTAL
extern
struct
cifs_wksid
wksidarr
[
NUM_WK_SIDS
];
extern
int
match_sid
(
struct
cifs_sid
*
);
extern
int
compare_sids
(
struct
cifs_sid
*
,
struct
cifs_sid
*
);
...
...
fs/cifs/cifssmb.c
浏览文件 @
af6f4612
...
...
@@ -3121,7 +3121,7 @@ CIFSSMBGetCIFSACL(const int xid, struct cifsTconInfo *tcon, __u16 fid,
/* BB check that data area is minimum length and as big as acl_len */
acl_len
=
le32_to_cpu
(
*
(
__le32
*
)
parm
);
acl_len
=
le32_to_cpu
(
*
parm
);
/* BB check if (acl_len > bufsize) */
parse_sec_desc
(
psec_desc
,
acl_len
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录