|
Lines 1333-1341
Link Here
|
| 1333 |
data_len = WVAL(buf, 1); |
1333 |
data_len = WVAL(buf, 1); |
| 1334 |
|
1334 |
|
| 1335 |
/* we can NOT simply trust the data_len given by the server ... */ |
1335 |
/* we can NOT simply trust the data_len given by the server ... */ |
| 1336 |
if (data_len > server->packet_size - (buf+3 - server->packet)) { |
1336 |
if (data_len > count || |
|
|
1337 |
data_len > server->packet_size - (buf+3 - server->packet)) { |
| 1337 |
printk(KERN_ERR "smb_proc_read: invalid data length!! " |
1338 |
printk(KERN_ERR "smb_proc_read: invalid data length!! " |
| 1338 |
"%d > %d - (%p - %p)\n", |
1339 |
"%d > %d || %d > %d - (%p - %p)\n", |
|
|
1340 |
data_len, count, |
| 1339 |
data_len, server->packet_size, buf+3, server->packet); |
1341 |
data_len, server->packet_size, buf+3, server->packet); |
| 1340 |
result = -EIO; |
1342 |
result = -EIO; |
| 1341 |
goto out; |
1343 |
goto out; |
|
Lines 1422-1430
Link Here
|
| 1422 |
buf = smb_base(server->packet) + data_off; |
1424 |
buf = smb_base(server->packet) + data_off; |
| 1423 |
|
1425 |
|
| 1424 |
/* we can NOT simply trust the info given by the server ... */ |
1426 |
/* we can NOT simply trust the info given by the server ... */ |
| 1425 |
if (data_len > server->packet_size - (buf - server->packet)) { |
1427 |
if (data_len > count || |
|
|
1428 |
data_len > server->packet_size - (buf - server->packet)) { |
| 1426 |
printk(KERN_ERR "smb_proc_read: invalid data length!! " |
1429 |
printk(KERN_ERR "smb_proc_read: invalid data length!! " |
| 1427 |
"%d > %d - (%p - %p)\n", |
1430 |
"%d > %d || %d > %d - (%p - %p)\n", |
|
|
1431 |
data_len, count, |
| 1428 |
data_len, server->packet_size, buf, server->packet); |
1432 |
data_len, server->packet_size, buf, server->packet); |
| 1429 |
result = -EIO; |
1433 |
result = -EIO; |
| 1430 |
goto out; |
1434 |
goto out; |