Skip to content

Commit a93ff74

Browse files
Denis ArefevSteve French
authored andcommitted
ksmbd: Prevent integer overflow in calculation of deadtime
The user can set any value for 'deadtime'. This affects the arithmetic expression 'req->deadtime * SMB_ECHO_INTERVAL', which is subject to overflow. The added check makes the server behavior more predictable. Found by Linux Verification Center (linuxtesting.org) with SVACE. Fixes: 0626e66 ("cifsd: add server handler for central processing and tranport layers") Cc: stable@vger.kernel.org Signed-off-by: Denis Arefev <arefev@swemel.ru> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent b37f2f3 commit a93ff74

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

fs/smb/server/transport_ipc.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,11 @@ static int ipc_server_config_on_startup(struct ksmbd_startup_request *req)
310310
server_conf.signing = req->signing;
311311
server_conf.tcp_port = req->tcp_port;
312312
server_conf.ipc_timeout = req->ipc_timeout * HZ;
313-
server_conf.deadtime = req->deadtime * SMB_ECHO_INTERVAL;
313+
if (check_mul_overflow(req->deadtime, SMB_ECHO_INTERVAL,
314+
&server_conf.deadtime)) {
315+
ret = -EINVAL;
316+
goto out;
317+
}
314318
server_conf.share_fake_fscaps = req->share_fake_fscaps;
315319
ksmbd_init_domain(req->sub_auth);
316320

@@ -337,6 +341,7 @@ static int ipc_server_config_on_startup(struct ksmbd_startup_request *req)
337341
server_conf.bind_interfaces_only = req->bind_interfaces_only;
338342
ret |= ksmbd_tcp_set_interfaces(KSMBD_STARTUP_CONFIG_INTERFACES(req),
339343
req->ifc_list_sz);
344+
out:
340345
if (ret) {
341346
pr_err("Server configuration error: %s %s %s\n",
342347
req->netbios_name, req->server_string,

0 commit comments

Comments
 (0)