Roland Dreier 79d59d0808 iscsi-target: Fix wrong buffer / buffer overrun in iscsi_change_param_value()
In non-leading connection login, iscsi_login_non_zero_tsih_s1() calls
iscsi_change_param_value() with the buffer it uses to hold the login
PDU, not a temporary buffer.  This leads to the login header getting
corrupted and login failing for non-leading connections in MC/S.

Fix this by adding a wrapper iscsi_change_param_sprintf() that handles
the temporary buffer itself to avoid confusion.  Also handle sending a
reject in case of failure in the wrapper, which lets the calling code
get quite a bit smaller and easier to read.

Finally, bump the size of the temporary buffer from 32 to 64 bytes to be
safe, since "MaxRecvDataSegmentLength=" by itself is 25 bytes; with a
trailing NUL, a value >= 1M will lead to a buffer overrun.  (This isn't
the default but we don't need to run right at the ragged edge here)

Reported-by: Santosh Kulkarni <santosh.kulkarni@calsoftinc.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Cc: stable@vger.kernel.org # 3.10+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
2014-06-03 19:17:31 -07:00
..
2014-04-05 15:37:40 -07:00
2014-04-05 15:37:40 -07:00
2014-04-18 16:57:53 -07:00
2014-04-24 23:46:58 +02:00
2014-04-08 13:27:40 +02:00
2014-04-22 09:28:02 -07:00
2014-04-17 10:51:01 -07:00
2014-04-09 08:39:39 -07:00
2014-04-16 12:28:47 -07:00
2014-04-09 08:39:39 -07:00
2014-04-18 16:40:08 -07:00
2014-04-15 15:21:22 -05:00
2014-04-24 12:53:38 -07:00
2014-04-18 16:40:08 -07:00
2014-04-05 15:37:40 -07:00
2014-04-21 14:28:40 -07:00
2014-04-05 15:38:41 -07:00
2014-04-03 14:05:02 -07:00
2014-04-16 14:07:51 -07:00