Commit 41dbda16 authored by Namjae Jeon's avatar Namjae Jeon Committed by Steve French

ksmbd: add reserved room in ipc request/response

Whenever new parameter is added to smb configuration, It is possible
to break the execution of the IPC daemon by mismatch size of
request/response. This patch tries to reserve space in ipc request/response
in advance to prevent that.
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent 99b7650a
...@@ -104,6 +104,7 @@ struct ksmbd_startup_request { ...@@ -104,6 +104,7 @@ struct ksmbd_startup_request {
*/ */
__u32 sub_auth[3]; /* Subauth value for Security ID */ __u32 sub_auth[3]; /* Subauth value for Security ID */
__u32 smb2_max_credits; /* MAX credits */ __u32 smb2_max_credits; /* MAX credits */
__u32 reserved[128]; /* Reserved room */
__u32 ifc_list_sz; /* interfaces list size */ __u32 ifc_list_sz; /* interfaces list size */
__s8 ____payload[]; __s8 ____payload[];
}; };
...@@ -114,7 +115,7 @@ struct ksmbd_startup_request { ...@@ -114,7 +115,7 @@ struct ksmbd_startup_request {
* IPC request to shutdown ksmbd server. * IPC request to shutdown ksmbd server.
*/ */
struct ksmbd_shutdown_request { struct ksmbd_shutdown_request {
__s32 reserved; __s32 reserved[16];
}; };
/* /*
...@@ -123,6 +124,7 @@ struct ksmbd_shutdown_request { ...@@ -123,6 +124,7 @@ struct ksmbd_shutdown_request {
struct ksmbd_login_request { struct ksmbd_login_request {
__u32 handle; __u32 handle;
__s8 account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ]; /* user account name */ __s8 account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ]; /* user account name */
__u32 reserved[16]; /* Reserved room */
}; };
/* /*
...@@ -136,6 +138,7 @@ struct ksmbd_login_response { ...@@ -136,6 +138,7 @@ struct ksmbd_login_response {
__u16 status; __u16 status;
__u16 hash_sz; /* hash size */ __u16 hash_sz; /* hash size */
__s8 hash[KSMBD_REQ_MAX_HASH_SZ]; /* password hash */ __s8 hash[KSMBD_REQ_MAX_HASH_SZ]; /* password hash */
__u32 reserved[16]; /* Reserved room */
}; };
/* /*
...@@ -144,6 +147,7 @@ struct ksmbd_login_response { ...@@ -144,6 +147,7 @@ struct ksmbd_login_response {
struct ksmbd_share_config_request { struct ksmbd_share_config_request {
__u32 handle; __u32 handle;
__s8 share_name[KSMBD_REQ_MAX_SHARE_NAME]; /* share name */ __s8 share_name[KSMBD_REQ_MAX_SHARE_NAME]; /* share name */
__u32 reserved[16]; /* Reserved room */
}; };
/* /*
...@@ -158,6 +162,7 @@ struct ksmbd_share_config_response { ...@@ -158,6 +162,7 @@ struct ksmbd_share_config_response {
__u16 force_directory_mode; __u16 force_directory_mode;
__u16 force_uid; __u16 force_uid;
__u16 force_gid; __u16 force_gid;
__u32 reserved[128]; /* Reserved room */
__u32 veto_list_sz; __u32 veto_list_sz;
__s8 ____payload[]; __s8 ____payload[];
}; };
...@@ -188,6 +193,7 @@ struct ksmbd_tree_connect_request { ...@@ -188,6 +193,7 @@ struct ksmbd_tree_connect_request {
__s8 account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ]; __s8 account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ];
__s8 share[KSMBD_REQ_MAX_SHARE_NAME]; __s8 share[KSMBD_REQ_MAX_SHARE_NAME];
__s8 peer_addr[64]; __s8 peer_addr[64];
__u32 reserved[16]; /* Reserved room */
}; };
/* /*
...@@ -197,6 +203,7 @@ struct ksmbd_tree_connect_response { ...@@ -197,6 +203,7 @@ struct ksmbd_tree_connect_response {
__u32 handle; __u32 handle;
__u16 status; __u16 status;
__u16 connection_flags; __u16 connection_flags;
__u32 reserved[16]; /* Reserved room */
}; };
/* /*
...@@ -205,6 +212,7 @@ struct ksmbd_tree_connect_response { ...@@ -205,6 +212,7 @@ struct ksmbd_tree_connect_response {
struct ksmbd_tree_disconnect_request { struct ksmbd_tree_disconnect_request {
__u64 session_id; /* session id */ __u64 session_id; /* session id */
__u64 connect_id; /* tree connection id */ __u64 connect_id; /* tree connection id */
__u32 reserved[16]; /* Reserved room */
}; };
/* /*
...@@ -213,6 +221,7 @@ struct ksmbd_tree_disconnect_request { ...@@ -213,6 +221,7 @@ struct ksmbd_tree_disconnect_request {
struct ksmbd_logout_request { struct ksmbd_logout_request {
__s8 account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ]; /* user account name */ __s8 account[KSMBD_REQ_MAX_ACCOUNT_NAME_SZ]; /* user account name */
__u32 account_flags; __u32 account_flags;
__u32 reserved[16]; /* Reserved room */
}; };
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment