From patchwork Thu Nov 23 00:53:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Colin NG X-Patchwork-Id: 6285 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp150185jah; Wed, 22 Nov 2017 16:53:42 -0800 (PST) X-Google-Smtp-Source: AGs4zMZoTz+QCu4LUoWrb3kY/cVIb3PeG5cN2g1yg5Dse76fdpTDWnODO3XramLvEwbQezKpaoVb X-Received: by 10.223.176.27 with SMTP id f27mr20074207wra.105.1511398422780; Wed, 22 Nov 2017 16:53:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511398422; cv=none; d=google.com; s=arc-20160816; b=BXavplhtvGQWCkPT5aDs5T5MLC5GLCZehEJ3hm6lPOvrNnfC0eRUdwUTwNr4UZeAyx f0UkYep933f1XPnZQaYicGrFfeR+J/HYyXspzRJ++Eus1K7aHYJ3FrAa3xW6itmvhs/5 rtiFf3zbZ74AhBndYQrNUK8d8vK1hnGoKxQJTZbyoVbNG8yvtp9D0m66coUfeRbt5Mpw 7VUrMKoGr7VOKGFSvtZNjx0xtUTunVs/svfLK+X2TlIYtX80TsqDkdb22XJS8WTR8Cah MqrqyKtuHJZj0lPTFNHsI0LjefMfA4EyZY09GMKD1xEjdhaUn3VS7BCgVdENOwwtTRU4 kq9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:spamdiagnosticmetadata :spamdiagnosticoutput:content-language:accept-language:message-id :date:thread-index:thread-topic:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=g5PomSLUFZ6LMXwzDMtVjGX8i5+pI5G6jb+fSTmmbxc=; b=EnndEqdeR2LhZxDLPCGlXvNIMPAV4JNrUFKvD6xtEUXQRtdDlMvYCiNh1bxXMC4YBl 9gvqt0vJH+n3ghPRNZKcZjD39CtyxUWEm4yRy7rIOWEHdvx3Ep6IxcVwo7j14lIMARY9 fXIwLcdd6JxJfaYakgITv35kIMAILjc7Vby/wKjd5nRqxmQfrsr6ICE6PcWa8UA5A9Ue mvL2Le5XOqws7num5GUXxIyXMhowgE+bkszHGRS1VX8BCizDRup+d3xe4UVR//qejRhs 3rJDvMEBgcn3kQgRxDBLJmGXXvELSQAbG66wCij/POKnT+/6EPMym5JHZmkjcsQWW3Ic YSUQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@hotmail.com header.s=selector1 header.b=FID9wXPL; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=hotmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j135si4476772wmf.92.2017.11.22.16.53.41; Wed, 22 Nov 2017 16:53:42 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@hotmail.com header.s=selector1 header.b=FID9wXPL; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=hotmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 20D0868A104; Thu, 23 Nov 2017 02:53:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-oln040092003090.outbound.protection.outlook.com [40.92.3.90]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C482D68A0E5 for ; Thu, 23 Nov 2017 02:53:33 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ijLB9//p2YkbovFfvNCpYkulLuBh7PViY3hJKQO6yIg=; b=FID9wXPLLS8t7w2m5T5LcZrcgAobPKZZ0GweNo2xqPy5zdrhYDzkf1vO1RlRnl5bmzjLTUZ3qJqDPkr62svFsCzZY88/Ak4QkDa8BQ5ZH7javYEwWMqQGz+UED9J87WNmQ3TdlaV21BKKG5Qk3vhPhvTSuZmKXF7JqhQvaIR4VrkVf6wCfa0bkCcZi65Ie1MXCuz+sN6XLwELZVkUSOBTYWeQaFjajYyIM5/UwrJWTAkUHyLB8K8BvSHGdER4mT94QtAroe+YNtnbU58gMmEZoQaqAVLbzRBfBnj5QIcPft2tn0KZgeHjGpysl6gVSRZNyVDrWvj8WOs3s9cNGfz9Q== Received: from CY1NAM02FT013.eop-nam02.prod.protection.outlook.com (10.152.74.57) by CY1NAM02HT162.eop-nam02.prod.protection.outlook.com (10.152.74.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.218.12; Thu, 23 Nov 2017 00:53:32 +0000 Received: from DM5PR22MB0681.namprd22.prod.outlook.com (10.152.74.54) by CY1NAM02FT013.mail.protection.outlook.com (10.152.75.162) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.239.4 via Frontend Transport; Thu, 23 Nov 2017 00:53:32 +0000 Received: from DM5PR22MB0681.namprd22.prod.outlook.com ([10.172.189.151]) by DM5PR22MB0681.namprd22.prod.outlook.com ([10.172.189.151]) with mapi id 15.20.0260.004; Thu, 23 Nov 2017 00:53:32 +0000 From: Colin NG To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [PATCH] libavcodec/opus: Add NULL pointer check for incoming data;avoid segfault Thread-Index: AQHTY/V8Uc9XROPkk0uIWYOnJqGJSA== Date: Thu, 23 Nov 2017 00:53:32 +0000 Message-ID: Accept-Language: en-CA, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: ffmpeg.org; dkim=none (message not signed) header.d=none; ffmpeg.org; dmarc=none action=none header.from=hotmail.com; x-incomingtopheadermarker: OriginalChecksum:F2C8F44B7735D4C0593DD47BA1432FF7165955EBCD7AA9231CAB7E3D85506807; UpperCasedChecksum:A399455BEC13E95E8A5D7E4892066E04DB293FD13B9134F292B6D4F7FD4D31A8; SizeAsReceived:6969; Count:45 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [kzASJwPRi+8WJnjlm6N7ZM3MBXTW0Qq1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY1NAM02HT162; 6:LfgGPLWJISonwX+tAH3K1MWB6E+lC1s8KGYbqGjLahQtghlBAgOZBBsKJ5O3hdp78U9UH+p3qDpTfHyNordGAqPWeKtPmeOeG3pFl0nGL4FNKEQ4MSxbjBxZ5ID8TiaaW/hIphrl8RybOAHttwFn8JVEvrHxnsZG0d9L5qMoV2+y6VTCmYA6Ylx3fL0kcZIQQ+6+uedw7XbYigZ9GovcF5grKmg9KuxzkkoD1RmpA+RLjm9dLzbGdB+d1u8oar9sON3E0Ic5BWTnGdpFfdVo6wtUhUty+4ioLwh8nGsZxob8w2P8kXTGAHpOFRC5Wc7I1reb2QjgYVWDF2p3EvS6JHq+835fqgyVWCLuUJFN9MA=; 5:l+vrxY87lK0OkpFyqKxbBkDiFHiagFsu63+sI1GpZfqgwCzAwBT9aUVRf+D6x/4xfrXX4uPUECdk7sfU1CN/A78M0YVcKqSTc6A0RZFhYwBf0BYQ4GIF7A67x/bpwQZnxnfeLWRVgPbjEiNusawoj/zw25fwmKHuZlIMCOO96kw=; 24:OJMM0QAArMHJmlW3WmjjjY1cTBtMGYVMf8kyNmI3N80CurgB14F6K+rYtZNuqDZneCIHnZV2LqvfL8UPUFJbWCBOQZJ21OdnSbO1VGbgbBI=; 7:o6VpD/K/2mLfmDH/bFgPQfd0FM6wpKRZhtJmCpMnd9wNi35nRCl4IN7i2Vm6CbzZV4+b8mW4l+uANPJoPPr5fgb/emM2Sz2RuZ29UTqGg5tgyt8PhD5bQ4qmq/j9hAVwPIJysd6mI/v/xrIjZrFUqy6g00LNq1E8tYDPN34EqVUAm868rHaPF7Apk6ApX1/NGag1UOv/hXHjj1rABYjb+lUfp52E88wAe7WiavZb4dd8W727/PL9Ie4aP3sSKsva x-incomingheadercount: 45 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: a4caf389-c083-4a3a-c667-08d5320c9e30 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(201702181274)(2017031322404)(1603101448)(1601125374)(1701031045); SRVR:CY1NAM02HT162; x-ms-exchange-slblob-mailprops: f36zkjAOy3XfI7aRd2C+Uh3cH4QY98dDmYmhj2zrePxSgute9XjKMIZXW1t07gBZi5WnHKRlKmJkSHVu987qkDC1jV5E82IZAf0fh/xkyth5IxtU2yo6ulZ9JiM9upYeWMyJyZpw/YQmruzLE3NTY/etTqsWpb9MVGYQDy/1z30h3kWHLC//2e6hSAdPJHs3jsnGvM0PCqSoPn488srOVb92q+fpU/m9IlIXvPXBNwZo3tZuc2PNxEBTp4lCN/lFr/j+ZJrdojRs97krLEwYAEPQj1FHVi2+p1AOuOgSctZChaLK0PCFm/E4N3Yau94tXFQFkHJBfm4nBLlyZcMH3Mf//lj1M6FUyVaE1XYKtuUlqhseGRn3fBDb/T8yjDGRarMc5i0L3GIGffF4tq/PRKgfAuYKhlneoR0FexbMIwEtHzvUmhKEAEGEFiFhhrcrYUC+6QFKDVjOS2T+MpMmdPuSXBvfBOKMueJ3U990L6tjI2MQswRJtCrzBQUwTOOHJIWR8SLQsjQTpi5CInqIm4w9CFiWobigbi0p0rS50ZfNYrSxP0FT5MeF6fx7aIOURMVOuM/HRst+DR+kqhVEEmFZQpBieOdglzq5B/8/S6VFVnhOj1fAb/Juq0ACTFSEOTxgQs0y8Lz15oIrELP6peK3wPkPcEqjaIb9YrAhCRPmrg5+aYKPxj6pncC6NCODjP73OK2KePGRZjUmkp6vHvXB3aGg+VKYyRUn/Pl38rg= x-ms-traffictypediagnostic: CY1NAM02HT162: x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031); SRVR:CY1NAM02HT162; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1NAM02HT162; x-forefront-prvs: 05009853EF x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:CY1NAM02HT162; H:DM5PR22MB0681.namprd22.prod.outlook.com; FPR:; SPF:None; LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4caf389-c083-4a3a-c667-08d5320c9e30 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2017 00:53:32.5755 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1NAM02HT162 Subject: [FFmpeg-devel] [PATCH] libavcodec/opus: Add NULL pointer check for incoming data; avoid segfault X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Colin NG Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- Fix for ticket 7674 libavcodec/opus_pvq.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/libavcodec/opus_pvq.c b/libavcodec/opus_pvq.c index f98b85d..02ccd69 100644 --- a/libavcodec/opus_pvq.c +++ b/libavcodec/opus_pvq.c @@ -504,6 +504,9 @@ static av_always_inline uint32_t quant_band_template(CeltPVQ *pvq, CeltFrame *f, int longblocks = (B0 == 1); uint32_t cm = 0; + if (!X) + return cm; + if (N == 1) { float *x = X; for (i = 0; i <= stereo; i++) { @@ -795,7 +798,7 @@ static av_always_inline uint32_t quant_band_template(CeltPVQ *pvq, CeltFrame *f, f->remaining2 -= curr_bits; } - if (q != 0) { + if (X && !q) { /* Finally do the actual (de)quantization */ if (quant) { cm = celt_alg_quant(rc, X, N, (q < 8) ? q : (8 + (q & 7)) << ((q >> 3) - 1), @@ -902,6 +905,9 @@ static float pvq_band_cost(CeltPVQ *pvq, CeltFrame *f, OpusRangeCoder *rc, int b float *Y_orig = f->block[1].coeffs + (ff_celt_freq_bands[band] << f->size); OPUS_RC_CHECKPOINT_SPAWN(rc); + if (!X && !Y) + return 0.0f; + memcpy(X, X_orig, band_size*sizeof(float)); if (Y) memcpy(Y, Y_orig, band_size*sizeof(float)); @@ -911,7 +917,6 @@ static float pvq_band_cost(CeltPVQ *pvq, CeltFrame *f, OpusRangeCoder *rc, int b int curr_balance = f->remaining / FFMIN(3, f->coded_bands - band); b = av_clip_uintp2(FFMIN(f->remaining2 + 1, f->pulses[band] + curr_balance), 14); } - if (f->dual_stereo) { pvq->encode_band(pvq, f, rc, band, X, NULL, band_size, b / 2, f->blocks, NULL, f->size, norm1, 0, 1.0f, lowband_scratch, cm[0]); @@ -925,7 +930,12 @@ static float pvq_band_cost(CeltPVQ *pvq, CeltFrame *f, OpusRangeCoder *rc, int b for (i = 0; i < band_size; i++) { err_x += (X[i] - X_orig[i])*(X[i] - X_orig[i]); - err_y += (Y[i] - Y_orig[i])*(Y[i] - Y_orig[i]); + } + + if (Y) { + for (i = 0; i < band_size; i++) { + err_y += (Y[i] - Y_orig[i])*(Y[i] - Y_orig[i]); + } } dist = sqrtf(err_x) + sqrtf(err_y);