Skip to content

Commit a5b1051

Browse files
committed
Merge branch 'ensure-the-copied-buf-is-nul-terminated'
Bui Quang Minh says: ==================== Ensure the copied buf is NUL terminated (part) I found that some drivers contains an out-of-bound read pattern like this kern_buf = memdup_user(user_buf, count); ... sscanf(kern_buf, ...); The sscanf can be replaced by some other string-related functions. This pattern can lead to out-of-bound read of kern_buf in string-related functions. This series fix the above issue by replacing memdup_user with memdup_user_nul. v1: https://lore.kernel.org/r/[email protected] ==================== Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
2 parents 52afb15 + f299ee7 commit a5b1051

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

drivers/net/ethernet/brocade/bna/bnad_debugfs.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ bnad_debugfs_write_regrd(struct file *file, const char __user *buf,
312312
void *kern_buf;
313313

314314
/* Copy the user space buf */
315-
kern_buf = memdup_user(buf, nbytes);
315+
kern_buf = memdup_user_nul(buf, nbytes);
316316
if (IS_ERR(kern_buf))
317317
return PTR_ERR(kern_buf);
318318

@@ -372,7 +372,7 @@ bnad_debugfs_write_regwr(struct file *file, const char __user *buf,
372372
void *kern_buf;
373373

374374
/* Copy the user space buf */
375-
kern_buf = memdup_user(buf, nbytes);
375+
kern_buf = memdup_user_nul(buf, nbytes);
376376
if (IS_ERR(kern_buf))
377377
return PTR_ERR(kern_buf);
378378

drivers/net/ethernet/intel/ice/ice_debugfs.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ ice_debugfs_module_write(struct file *filp, const char __user *buf,
171171
if (*ppos != 0 || count > 8)
172172
return -EINVAL;
173173

174-
cmd_buf = memdup_user(buf, count);
174+
cmd_buf = memdup_user_nul(buf, count);
175175
if (IS_ERR(cmd_buf))
176176
return PTR_ERR(cmd_buf);
177177

@@ -257,7 +257,7 @@ ice_debugfs_nr_messages_write(struct file *filp, const char __user *buf,
257257
if (*ppos != 0 || count > 4)
258258
return -EINVAL;
259259

260-
cmd_buf = memdup_user(buf, count);
260+
cmd_buf = memdup_user_nul(buf, count);
261261
if (IS_ERR(cmd_buf))
262262
return PTR_ERR(cmd_buf);
263263

@@ -332,7 +332,7 @@ ice_debugfs_enable_write(struct file *filp, const char __user *buf,
332332
if (*ppos != 0 || count > 2)
333333
return -EINVAL;
334334

335-
cmd_buf = memdup_user(buf, count);
335+
cmd_buf = memdup_user_nul(buf, count);
336336
if (IS_ERR(cmd_buf))
337337
return PTR_ERR(cmd_buf);
338338

@@ -428,7 +428,7 @@ ice_debugfs_log_size_write(struct file *filp, const char __user *buf,
428428
if (*ppos != 0 || count > 5)
429429
return -EINVAL;
430430

431-
cmd_buf = memdup_user(buf, count);
431+
cmd_buf = memdup_user_nul(buf, count);
432432
if (IS_ERR(cmd_buf))
433433
return PTR_ERR(cmd_buf);
434434

drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -999,12 +999,10 @@ static ssize_t rvu_dbg_qsize_write(struct file *filp,
999999
u16 pcifunc;
10001000
int ret, lf;
10011001

1002-
cmd_buf = memdup_user(buffer, count + 1);
1002+
cmd_buf = memdup_user_nul(buffer, count);
10031003
if (IS_ERR(cmd_buf))
10041004
return -ENOMEM;
10051005

1006-
cmd_buf[count] = '\0';
1007-
10081006
cmd_buf_tmp = strchr(cmd_buf, '\n');
10091007
if (cmd_buf_tmp) {
10101008
*cmd_buf_tmp = '\0';

0 commit comments

Comments
 (0)