diff options
author | Jouni Malinen <jkmaline@cc.hut.fi> | 2006-03-19 22:21:47 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2006-03-23 16:16:58 -0500 |
commit | 3a1c42ad98fddab63e62b400ae98e6f609485efc (patch) | |
tree | 419225b1ff68508e04f08dfb98ca8b21d1e83fef /drivers/net/wireless/hostap | |
parent | 8abceaf1cf44b9d95bcc366fa277b33e292141c4 (diff) |
[PATCH] hostap: Fix unlikely read overrun in CIS parsing
The Coverity checker (CID: 452, 453, 454, 455, 456) spotted this
unlikely read overrun of CIS buffer. Abort if CISTPL_CONFIG or
CISTPL_MANFID would not fit in buffer.
Signed-off-by: Jouni Malinen <jkmaline@cc.hut.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/hostap')
-rw-r--r-- | drivers/net/wireless/hostap/hostap_plx.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/hostap/hostap_plx.c b/drivers/net/wireless/hostap/hostap_plx.c index 94fe2449f099..e258517ac85d 100644 --- a/drivers/net/wireless/hostap/hostap_plx.c +++ b/drivers/net/wireless/hostap/hostap_plx.c | |||
@@ -368,7 +368,7 @@ static int prism2_plx_check_cis(void __iomem *attr_mem, int attr_len, | |||
368 | 368 | ||
369 | switch (cis[pos]) { | 369 | switch (cis[pos]) { |
370 | case CISTPL_CONFIG: | 370 | case CISTPL_CONFIG: |
371 | if (cis[pos + 1] < 1) | 371 | if (cis[pos + 1] < 2) |
372 | goto cis_error; | 372 | goto cis_error; |
373 | rmsz = (cis[pos + 2] & 0x3c) >> 2; | 373 | rmsz = (cis[pos + 2] & 0x3c) >> 2; |
374 | rasz = cis[pos + 2] & 0x03; | 374 | rasz = cis[pos + 2] & 0x03; |
@@ -390,7 +390,7 @@ static int prism2_plx_check_cis(void __iomem *attr_mem, int attr_len, | |||
390 | break; | 390 | break; |
391 | 391 | ||
392 | case CISTPL_MANFID: | 392 | case CISTPL_MANFID: |
393 | if (cis[pos + 1] < 4) | 393 | if (cis[pos + 1] < 5) |
394 | goto cis_error; | 394 | goto cis_error; |
395 | manfid1 = cis[pos + 2] + (cis[pos + 3] << 8); | 395 | manfid1 = cis[pos + 2] + (cis[pos + 3] << 8); |
396 | manfid2 = cis[pos + 4] + (cis[pos + 5] << 8); | 396 | manfid2 = cis[pos + 4] + (cis[pos + 5] << 8); |