Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/bta2dpd/bta2dpd Avoid read overflows



details:   https://anonhg.NetBSD.org/src/rev/56f358c07f16
branches:  trunk
changeset: 964505:56f358c07f16
user:      maya <maya%NetBSD.org@localhost>
date:      Mon Aug 05 13:39:18 2019 +0000

description:
Avoid read overflows

diffstat:

 usr.sbin/bta2dpd/bta2dpd/avdtp.c |  8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diffs (36 lines):

diff -r db7278a29537 -r 56f358c07f16 usr.sbin/bta2dpd/bta2dpd/avdtp.c
--- a/usr.sbin/bta2dpd/bta2dpd/avdtp.c  Mon Aug 05 13:30:21 2019 +0000
+++ b/usr.sbin/bta2dpd/bta2dpd/avdtp.c  Mon Aug 05 13:39:18 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: avdtp.c,v 1.2 2018/07/25 19:03:50 kamil Exp $ */
+/* $NetBSD: avdtp.c,v 1.3 2019/08/05 13:39:18 maya Exp $ */
 
 /*-
  * Copyright (c) 2015 - 2016 Nathanial Sloss <nathanialsloss%yahoo.com.au@localhost>
@@ -210,7 +210,7 @@
        bool isSink;
 
        if (recvsize >= 2) {
-               for (offset = 0;offset < recvsize;offset += 2) {
+               for (offset = 0; offset < recvsize - 1; offset += 2) {
                        sepInfo->sep = buffer[offset] >> 2;
                        sepInfo->media_Type = buffer[offset+1] >> 4;
                        isSink = (buffer[offset+1] >> 3) & 1;
@@ -313,7 +313,7 @@
        uint8_t supBitpoolMin, supBitpoolMax, tmp_mask;
        size_t i;
 
-       for (i = 0; i < cap_len; i++) {
+       for (i = 0; i < cap_len - 5; i++) {
                if (capabilities[i] == mediaTransport &&
                    capabilities[i + 1] == 0 &&
                    capabilities[i + 2] == mediaCodec &&
@@ -321,7 +321,7 @@
                    capabilities[i + 5] == SBC_CODEC_ID)
                        break;
        }
-       if (i >= cap_len)
+       if (i >= cap_len - 9)
                goto auto_config_failed;
 
        availFreqMode = capabilities[i + 6];



Home | Main Index | Thread Index | Old Index