Re: [net-next][PATCH] RDS: validate the requested traces user input against max supported

2017-01-06 Thread David Miller
From: Santosh Shilimkar 
Date: Fri,  6 Jan 2017 10:44:15 -0800

> Larger than supported value can lead to array read/write overflow.
> 
> Reported-by: Colin Ian King 
> Signed-off-by: Santosh Shilimkar 

Applied, thanks.


Re: [net-next][PATCH] RDS: validate the requested traces user input against max supported

2017-01-06 Thread David Miller
From: Santosh Shilimkar 
Date: Fri,  6 Jan 2017 10:44:15 -0800

> Larger than supported value can lead to array read/write overflow.
> 
> Reported-by: Colin Ian King 
> Signed-off-by: Santosh Shilimkar 

Applied, thanks.


[net-next][PATCH] RDS: validate the requested traces user input against max supported

2017-01-06 Thread Santosh Shilimkar
Larger than supported value can lead to array read/write overflow.

Reported-by: Colin Ian King 
Signed-off-by: Santosh Shilimkar 
---
 net/rds/af_rds.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/rds/af_rds.c b/net/rds/af_rds.c
index fd821740..b405f77 100644
--- a/net/rds/af_rds.c
+++ b/net/rds/af_rds.c
@@ -310,6 +310,9 @@ static int rds_recv_track_latency(struct rds_sock *rs, char 
__user *optval,
if (copy_from_user(, optval, sizeof(trace)))
return -EFAULT;
 
+   if (trace.rx_traces > RDS_MSG_RX_DGRAM_TRACE_MAX)
+   return -EFAULT;
+
rs->rs_rx_traces = trace.rx_traces;
for (i = 0; i < rs->rs_rx_traces; i++) {
if (trace.rx_trace_pos[i] > RDS_MSG_RX_DGRAM_TRACE_MAX) {
-- 
1.9.1



[net-next][PATCH] RDS: validate the requested traces user input against max supported

2017-01-06 Thread Santosh Shilimkar
Larger than supported value can lead to array read/write overflow.

Reported-by: Colin Ian King 
Signed-off-by: Santosh Shilimkar 
---
 net/rds/af_rds.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/rds/af_rds.c b/net/rds/af_rds.c
index fd821740..b405f77 100644
--- a/net/rds/af_rds.c
+++ b/net/rds/af_rds.c
@@ -310,6 +310,9 @@ static int rds_recv_track_latency(struct rds_sock *rs, char 
__user *optval,
if (copy_from_user(, optval, sizeof(trace)))
return -EFAULT;
 
+   if (trace.rx_traces > RDS_MSG_RX_DGRAM_TRACE_MAX)
+   return -EFAULT;
+
rs->rs_rx_traces = trace.rx_traces;
for (i = 0; i < rs->rs_rx_traces; i++) {
if (trace.rx_trace_pos[i] > RDS_MSG_RX_DGRAM_TRACE_MAX) {
-- 
1.9.1