From patchwork Mon Dec 6 01:08:25 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 32042 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp3908783iog; Sun, 5 Dec 2021 17:09:01 -0800 (PST) X-Google-Smtp-Source: ABdhPJws5KoL5CH4iUJr5DRZaQltC2KG/8ruodOWEM7J0If7kGd8I9XGjtGghlomwAO+RKohTUJC X-Received: by 2002:a05:6402:544:: with SMTP id i4mr49621816edx.9.1638752940863; Sun, 05 Dec 2021 17:09:00 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q16si19573851edd.615.2021.12.05.17.08.55; Sun, 05 Dec 2021 17:09:00 -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=@outlook.com header.s=selector1 header.b=Tlxi+LLw; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7569468A6B0; Mon, 6 Dec 2021 03:08:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2020.outbound.protection.outlook.com [40.92.90.20]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 965B768921B for ; Mon, 6 Dec 2021 03:08:44 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rf1cJsiQGn23KaftKCQoW1JZb0s2UUy0jXTERjtHtzRg5GtV813NYB0Bbpud+JAukx4bDgTlLSBn2MOh/jpw3O9lW1hhF9EuATZdNXFyoSDJzV+7VbecNPd8cEP1SmCIBxr+itdRYK+WBrkHqeXUkhT38iwuBWS2SpECG7eptnsbOACU1bOXDGfRREi91OSFuevn1SXw0tzMg/sGnXxO0loB1n3rMQt3u6hU6qMLle2/KJI+91z1GTFdqlOCE8y5Pj8oJHz0O11EEFmAWLrXXczFmqWfhTuCThNJcLZuFDZ8/M4GZ3Tk9pvQy753/8DBvhv80rijK/pEcRRbMXh3EA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=c7p8br0JF5S2/OYyaRCFZN/QFfaVTD3TzH8Y9JMdc1Y=; b=brozVfqlZyt+Ae2nd4sFLlAR/usbfqjQB+fg3h+0bkaV6lMPpup699K66YFlbaFsloD7kpwm3VEFj8hLOio50c/XHjlG04+K4L6SGlwotTIRHXqvntBqAEsHYQPP7Cvr7URDO8pI3t+EOw3kzbbrxtQC6Ta4QkuZgnfdYSxAQAnC1A3lL/3PsUyskakHbgejMcMInjp+XgSA0g+GSiEyBvi52bq+uF+uewjuspJvekf6TaScY2XGOupcsit3rin0VlLc5098PV7c17SLI8Scm20DEKTm4AAdUrUuUEKl1+Sv2XB7gsdpG5JFaGvNKmLXRptg3ToD0CvLPT8p03B5CQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c7p8br0JF5S2/OYyaRCFZN/QFfaVTD3TzH8Y9JMdc1Y=; b=Tlxi+LLwhF7CCDfIDivN6tVx1lkW+Gc+FphVfoGKisDbfjkZAbG3O2+V8YiIp+nBDw2H+2iLkOUbDIgXfQYXMY8Z6hNQDA18RHvFatUF0cq/cSJ4oV/T9OobWQtUZuwAHLOZrFwYSsGRs713IJehbUdkpwHGdH8uaoqj/ZOjznVjkgmoSyI/X6uWFhSKMNG72qvyMi56w+sVRPuxmagxRpcVpaqOmVjtsiRQHyDr01GD6XGK/1mRm/jHvf7kP1IVXuAGkxKrcY/S8rouGnRbUFsAnjeFl+D8VtR7xBoJghOUc6mnGVrsmbpp/xa2pIiHnHLldcLVZApkK4J3r8voDA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB3686.eurprd03.prod.outlook.com (2603:10a6:209:2d::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.21; Mon, 6 Dec 2021 01:08:42 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%4]) with mapi id 15.20.4755.021; Mon, 6 Dec 2021 01:08:42 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 6 Dec 2021 02:08:25 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [6Bfm4ozn8Hg1Dg6eZdca+MrW1z3W9OLZ] X-ClientProxiedBy: AM0PR02CA0122.eurprd02.prod.outlook.com (2603:10a6:20b:28c::19) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211206010834.239382-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.248.74) by AM0PR02CA0122.eurprd02.prod.outlook.com (2603:10a6:20b:28c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4755.17 via Frontend Transport; Mon, 6 Dec 2021 01:08:42 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b6e68f3f-6066-482f-3512-08d9b854f1c2 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiT2s5ZWgpZq8Fu1c4CoKhX6ihkg9cyXRUDIVdo4lGA08xlDG2xJMd6mHxPkDBeg/HtrJMT8EvZq22K8aT5LM5eCC2A44WJe2ARhb0IIKRiLCq/7/OofC4+ommBRGNira81c/Fj3rUasvQG8IMoCcFnNofQkzDP34VGujxE9ujDFviuNICGd5Updcx3suf9UE8hJCxlPhIsuo44uvMb9TA2pg0MTs8qiPd0rbXe6Xcjnf6LcKg4X2pYRTo1EmvoCXG7TbL0+8oJP/W78khiQQWISmvcilUxbSMnQrgDbJyTJxEhGlK0YJL5oNpKov1Nj0tU7V81UZrX/8XXPG8wl/wRIGGjsShqePWMysxT2lhdTYArjvENvPxzQ1BcGcwCUFqTB5N8jRemua91qBUHMeawTDCUdVtv3TzqMOS6i/H/ZTmMruxZKiXPNQHaerEfxzjUHU6MzMhS1ji7sXIl2++t9RF99RzDf2SEn8PbmsRnBbaeVboG6QAjlH76hG9oqNOjLXaFJnqTboVG5bRfXfijEEE3FhZK2hOZN4KDqgv5SaQJ29UK2VTawOyYDX/niIKwmilLvBTaBrZ+p2AagvJr/0meZTTMG9uvZdZ3ZWv4wy7d0D11XUJ65/KcclTX4kpnGqGRGQFXsHhY80PWzrQpgK2ypykbwENjUzE4UqTlbywLn4MK5t2MRLaIySOnV2tBKGIWYPPssNcI1zx2AQMIEJI2uXQ8CIN9IyXu+A0OFNoJ0Z1iheQZ/+NGlWHsxSOk= X-MS-TrafficTypeDiagnostic: AM6PR03MB3686: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BVnRY0YHaMP6lOcpXgqTYvxfvKNhusOXot2d/qkVh5cEqQjeOauBIB14hGFaAyYpAXzlNZGgCRQ9FHxNJzLFUVkRiUd1pHIwINZHkR3YR1uIcQwNEeSAaA1+8OHUAf6OKarqgYJfz3NzHgSuML+B2l4ZqFRhF/j22zutDPjfMrmVWLYc9JPrhg0DmETxuJ3t5FeNWxMpOIy7bwlk3oSGDw8q08Adb9K5K8laAPCZl/tqti6oP9T9eJ1x8a2/37DE1BmUJT+P8pQOBbIY3SvPbu/FqZltqXFM30LFgu9Tamp5I7AIaGjv1CPUNGdR6DdZ9EcvDCGvWODDD0jLUj3zCuVT9NK86eL5ItsLkmc2edyf9b7IjNFL3xug0gOHfpL8hC9gTX2S/NHENAURWgiaurLVZrgcjHOeGrWvr2LlBWlpxgDkLZ+RwraJ5YCDIBWPMg0ngHFvVgaJP/44Mw7iU9KYBXoiNxtc49CvtWT/dimw8x4tJAEz8sBip0gMd616l+jQcR4mUY0S7hqbFMspyPKVcXY6aGl6TFNvptzJnGTrT6XM4SjFHe3avU3voC5gk7ATbqOcdI5PPectn/kbWQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Imz+Gw5tvYqGk7OYf5D3W//mGkLK4vav/r11O7cafj4GzFtwyp6Axxs32GSmv6a62tFnBPWzRLeOJY+EViAcJ9B/HyX+orP04Uo0VkRUcntzr/+alAZcesuvmqo64EXPFZUFozZ1L6mbDh3Wp8CazCKMufK9i/3Ygf5VwScfWLjnwapHo5Mou6uUgtKYY9aFLIhdqBwrMhUdtG5J6wz++WQ3TgHdUf8N2Rd460TTnLLr9yiI65O2x94MpaqjfX0YM/9mZKrZbmB4ieFYjpRMmBZss4ezrIxmDVeqinii9WYMpKEnmp42KVCMWvYW+DS55nyDHPvMenrEa+fyDgV+Vsu8ykAcAYEbqYV7+3lGZNT5e6xyBlPX8zNhVllIz+21CmejrP+rZUZbH3MDuxo6QsxzrHPz0oaRUgijDYnNS3MarDue9aEBhVbD2+pgiif6JWFAsQ/jUsYKqRDySkWs6UbeO9H/JGL726WVKcT8DRlExdDQJ8O9xJberAfRm1NqSCvoMS+5OxzJO8BLPK5RlZNIfuDfnCIUYiqQqKvL7B8q8fFGdC9CrBEISwjwD+Rz6avKd1XeBROiQAu6w7ms/dTicwmvlKMDWsIg1ji2KrQan9d5RfitZnvr5PO+WnYfLJVjltkjZUPvaXk3oUQ6Vz1WEcN9RE2AD8OvYUxYbr0ZVEx+qMryP4g/6WA5UIHSs7F9DdygtavqjjUeXcfZck0oXjDFtIsrFoD/ZIg+GYMfKJIJPrjBjpz9laxVBu+KcDuLiW62VMb6MP04TNRBCbpFWi9XA3eNAaWoekOcBvJpmS/0wJOJDwP1vlXqvW08GpGsYSAQkweR9OMcy9kgLWLPNUc68BmTqkBeY5oQlXYD7AC/Qs52nue3eBtbxFnZ3vHOTbUBQcdhMaTlmJQIPfcFS7/jI6ztCn31RFalcnwmV/cpOj07yCAk7aDlJ8ZgEtsQSOeQjRdKERv5xN1RSA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b6e68f3f-6066-482f-3512-08d9b854f1c2 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Dec 2021 01:08:42.5872 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR03MB3686 Subject: [FFmpeg-devel] [PATCH 01/10] avformat/utils: Make ff_data_to_hex() zero-terminate the string X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ugOYHXERAu7J Most callers want it that way anyway. Signed-off-by: Andreas Rheinhardt --- libavformat/hls.c | 2 -- libavformat/hlsenc.c | 1 - libavformat/httpauth.c | 5 ----- libavformat/internal.h | 11 +++++++++++ libavformat/movenc.c | 1 - libavformat/omadec.c | 1 - libavformat/rtmpproto.c | 2 -- libavformat/sdp.c | 3 --- libavformat/takdec.c | 1 - libavformat/utils.c | 1 + 10 files changed, 12 insertions(+), 16 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index 52a031ed54..557faf8e8d 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -1284,7 +1284,6 @@ static int open_input(HLSContext *c, struct playlist *pls, struct segment *seg, char iv[33], key[33], url[MAX_URL_SIZE]; ff_data_to_hex(iv, seg->iv, sizeof(seg->iv), 0); ff_data_to_hex(key, pls->key, sizeof(pls->key), 0); - iv[32] = key[32] = '\0'; if (strstr(seg->url, "://")) snprintf(url, sizeof(url), "crypto+%s", seg->url); else @@ -2074,7 +2073,6 @@ static int hls_read_header(AVFormatContext *s) if (strstr(in_fmt->name, "mov")) { char key[33]; ff_data_to_hex(key, pls->key, sizeof(pls->key), 0); - key[32] = '\0'; av_dict_set(&options, "decryption_key", key, AV_OPT_FLAG_DECODING_PARAM); } else if (!c->crypto_ctx.aes_ctx) { c->crypto_ctx.aes_ctx = av_aes_alloc(); diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index cfd0c036d1..1c2a556375 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -745,7 +745,6 @@ static int do_encrypt(AVFormatContext *s, VariantStream *vs) memcpy(iv, hls->iv, sizeof(iv)); } ff_data_to_hex(buf, iv, sizeof(iv), 0); - buf[32] = '\0'; memcpy(hls->iv_string, buf, sizeof(hls->iv_string)); } diff --git a/libavformat/httpauth.c b/libavformat/httpauth.c index 4f79c78edc..0a98ff80a5 100644 --- a/libavformat/httpauth.c +++ b/libavformat/httpauth.c @@ -156,7 +156,6 @@ static char *make_digest_auth(HTTPAuthState *state, const char *username, for (i = 0; i < 2; i++) cnonce_buf[i] = av_get_random_seed(); ff_data_to_hex(cnonce, (const uint8_t*) cnonce_buf, sizeof(cnonce_buf), 1); - cnonce[2*sizeof(cnonce_buf)] = 0; md5ctx = av_md5_alloc(); if (!md5ctx) @@ -166,7 +165,6 @@ static char *make_digest_auth(HTTPAuthState *state, const char *username, update_md5_strings(md5ctx, username, ":", state->realm, ":", password, NULL); av_md5_final(md5ctx, hash); ff_data_to_hex(A1hash, hash, 16, 1); - A1hash[32] = 0; if (!strcmp(digest->algorithm, "") || !strcmp(digest->algorithm, "MD5")) { } else if (!strcmp(digest->algorithm, "MD5-sess")) { @@ -174,7 +172,6 @@ static char *make_digest_auth(HTTPAuthState *state, const char *username, update_md5_strings(md5ctx, A1hash, ":", digest->nonce, ":", cnonce, NULL); av_md5_final(md5ctx, hash); ff_data_to_hex(A1hash, hash, 16, 1); - A1hash[32] = 0; } else { /* Unsupported algorithm */ av_free(md5ctx); @@ -185,7 +182,6 @@ static char *make_digest_auth(HTTPAuthState *state, const char *username, update_md5_strings(md5ctx, method, ":", uri, NULL); av_md5_final(md5ctx, hash); ff_data_to_hex(A2hash, hash, 16, 1); - A2hash[32] = 0; av_md5_init(md5ctx); update_md5_strings(md5ctx, A1hash, ":", digest->nonce, NULL); @@ -195,7 +191,6 @@ static char *make_digest_auth(HTTPAuthState *state, const char *username, update_md5_strings(md5ctx, ":", A2hash, NULL); av_md5_final(md5ctx, hash); ff_data_to_hex(response, hash, 16, 1); - response[32] = 0; av_free(md5ctx); diff --git a/libavformat/internal.h b/libavformat/internal.h index 20e93d9267..f43e408548 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -484,6 +484,17 @@ void ff_flush_packet_queue(AVFormatContext *s); */ int ff_mkdir_p(const char *path); +/** + * Write hexadecimal string corresponding to given binary data. The string + * is zero-terminated. + * + * @param buf the output string is written here; + * needs to be at least 2 * size + 1 bytes long. + * @param src the input data to be transformed. + * @param size the size (in byte) of src. + * @param lowercase determines whether to use the range [0-9a-f] or [0-9A-F]. + * @return buf. + */ char *ff_data_to_hex(char *buf, const uint8_t *src, int size, int lowercase); /** diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 38ff90833a..0f912dd012 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -4290,7 +4290,6 @@ static void param_write_hex(AVIOContext *pb, const char *name, const uint8_t *va char buf[150]; len = FFMIN(sizeof(buf) / 2 - 1, len); ff_data_to_hex(buf, value, len, 0); - buf[2 * len] = '\0'; avio_printf(pb, "\n", name, buf); } diff --git a/libavformat/omadec.c b/libavformat/omadec.c index a727cc4d66..4c418a5ff2 100644 --- a/libavformat/omadec.c +++ b/libavformat/omadec.c @@ -108,7 +108,6 @@ static void hex_log(AVFormatContext *s, int level, if (av_log_get_level() < level) return; ff_data_to_hex(buf, value, len, 1); - buf[len << 1] = '\0'; av_log(s, level, "%s: %s\n", name, buf); } diff --git a/libavformat/rtmpproto.c b/libavformat/rtmpproto.c index b14d23b919..34020bc383 100644 --- a/libavformat/rtmpproto.c +++ b/libavformat/rtmpproto.c @@ -1663,7 +1663,6 @@ static int do_llnw_auth(RTMPContext *rt, const char *user, const char *nonce) av_md5_update(md5, rt->password, strlen(rt->password)); av_md5_final(md5, hash); ff_data_to_hex(hashstr1, hash, 16, 1); - hashstr1[32] = '\0'; av_md5_init(md5); av_md5_update(md5, method, strlen(method)); @@ -1673,7 +1672,6 @@ static int do_llnw_auth(RTMPContext *rt, const char *user, const char *nonce) av_md5_update(md5, "/_definst_", strlen("/_definst_")); av_md5_final(md5, hash); ff_data_to_hex(hashstr2, hash, 16, 1); - hashstr2[32] = '\0'; av_md5_init(md5); av_md5_update(md5, hashstr1, strlen(hashstr1)); diff --git a/libavformat/sdp.c b/libavformat/sdp.c index a41c2cf655..e83616cfbe 100644 --- a/libavformat/sdp.c +++ b/libavformat/sdp.c @@ -216,7 +216,6 @@ static char *extradata2psets(AVFormatContext *s, AVCodecParameters *par) memcpy(p, profile_string, strlen(profile_string)); p += strlen(p); ff_data_to_hex(p, sps + 1, 3, 0); - p[6] = '\0'; } av_free(tmpbuf); @@ -340,7 +339,6 @@ static char *extradata2config(AVFormatContext *s, AVCodecParameters *par) } memcpy(config, "; config=", 9); ff_data_to_hex(config + 9, par->extradata, par->extradata_size, 0); - config[9 + par->extradata_size * 2] = 0; return config; } @@ -475,7 +473,6 @@ static char *latm_context2config(AVFormatContext *s, AVCodecParameters *par) return NULL; } ff_data_to_hex(config, config_byte, 6, 1); - config[12] = 0; return config; } diff --git a/libavformat/takdec.c b/libavformat/takdec.c index 6bb26683b4..bb256e1190 100644 --- a/libavformat/takdec.c +++ b/libavformat/takdec.c @@ -122,7 +122,6 @@ static int tak_read_header(AVFormatContext *s) } ff_data_to_hex(md5_hex, md5, sizeof(md5), 1); - md5_hex[2 * sizeof(md5)] = '\0'; av_log(s, AV_LOG_VERBOSE, "MD5=%s\n", md5_hex); break; } diff --git a/libavformat/utils.c b/libavformat/utils.c index 7840e8717c..c84f6a2348 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1151,6 +1151,7 @@ char *ff_data_to_hex(char *buff, const uint8_t *src, int s, int lowercase) buff[i * 2] = hex_table[src[i] >> 4]; buff[i * 2 + 1] = hex_table[src[i] & 0xF]; } + buff[2 * s] = '\0'; return buff; }