From patchwork Tue Mar 3 04:20:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 18012 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A83C744B6CC for ; Tue, 3 Mar 2020 06:37:58 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 759DD68B559; Tue, 3 Mar 2020 06:37:58 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A145F68B4C2 for ; Tue, 3 Mar 2020 06:37:51 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id q8so2638657wrm.4 for ; Mon, 02 Mar 2020 20:37:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=U5OsplJSn1C6YjfxSkmuTbVCkbb0EECCTGowKJqHxz0=; b=ogHVboZkKc84cigzfkOlTAZYPfG/Hq7dGA0MELGCKSRidPH4y1/14trKhTHPr2dZiD ipYeP2OHJlJT3K/CIvAf3NaFIHbsZ140jcq9zeV076Cj+vUIwcyRuzBNQl3ROPBNCtnz 9JOY6Y6ZJqfFeXyvGjx2rPFZdBBGSpyvcO9pgNHj65EwVLjjNkfYf5JXLj6LGr4Xh6Ai 1+YZ9VE4JwXcFR7iueOUh5STaYA5NkS84luYtO4g7HpwY6ETrGe8r+YHZEDqmnXTsIQP KcGThA4GOFtiG56/W4GE2LkBb/H8rosaKFDAfSW1AdK6ssIlE0M3f2ODpOn7aUhYbyuD jV3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=U5OsplJSn1C6YjfxSkmuTbVCkbb0EECCTGowKJqHxz0=; b=UuVjEgXl6zEuQd+xXhczGuPDHz7uaarFhs4XEDIi8wK8SG584GZfdARQtwC7rkSqJ2 t4JN8HbC40JPWo4eEAbj0iX2lBES8XrkJ2OSutI1G1xIizHTB6nq3SPIarYdNdrVgeOz fg+COIp/QynoBNi6q2+VOV0h3nxnUOvgmAyqK7dGtTvbDELnNYVVPiFm8nicTp3XUA9J L3KWdCzZZGWDOBB6uUoVgc4WBZN7R97pl5axnwoBrHLspy0ajOh6HrZkA2Dbc849P0ee pxkSyQgP119iO2b7FRfoiVmHxVzIMucJR8ASx4FMqrP8PfW7YtLQUkPEvyx6X22AftKv hw4g== X-Gm-Message-State: ANhLgQ03wifEOBwnWABR42g0clvU/8+l/l0Z98Q26poDEQIgps4frtEH WZXEODLQXMHtnOeln5BaGO9lKfd1 X-Google-Smtp-Source: ADFU+vtGD2/ZdP9+0UbeTqUMNDrp6QJz4E/sRRAfd15q9Yqnpdcurw0nfWwyKjxlRxa1BbINvQQoWQ== X-Received: by 2002:a5d:504e:: with SMTP id h14mr3064991wrt.82.1583210270579; Mon, 02 Mar 2020 20:37:50 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id s12sm1733963wmj.39.2020.03.02.20.37.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 20:37:49 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 3 Mar 2020 05:20:05 +0100 Message-Id: <20200303042006.6370-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/v4l2_m2m: Avoid using intermediate buffer 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: Andriy Gelman , Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now, v4l2_m2m would write via snprintf() into an intermediate buffer and then copy from there (via strncpy()) to the end buffer. This commit changes this by removing the intermediate buffer. The call to strncpy() was actually of the form strncpy(dst, src, strlen(src) + 1) which is unsafe in general, but safe in this instance because dst and src were both of the same size and src was a proper zero-terminated string. But this nevertheless led to a compiler warning "‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]" in GCC 9.2. strlen() was unnecessary anyway. Reviewed-by: Andriy Gelman Signed-off-by: Andreas Rheinhardt --- Thanks to Andriy for testing and reviewing. libavcodec/v4l2_m2m.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c index 2d21f910bc..e48b3a8ccf 100644 --- a/libavcodec/v4l2_m2m.c +++ b/libavcodec/v4l2_m2m.c @@ -358,7 +358,6 @@ int ff_v4l2_m2m_codec_init(V4L2m2mPriv *priv) { int ret = AVERROR(EINVAL); struct dirent *entry; - char node[PATH_MAX]; DIR *dirp; V4L2m2mContext *s = priv->context; @@ -372,9 +371,8 @@ int ff_v4l2_m2m_codec_init(V4L2m2mPriv *priv) if (strncmp(entry->d_name, "video", 5)) continue; - snprintf(node, sizeof(node), "/dev/%s", entry->d_name); - av_log(s->avctx, AV_LOG_DEBUG, "probing device %s\n", node); - strncpy(s->devname, node, strlen(node) + 1); + snprintf(s->devname, sizeof(s->devname), "/dev/%s", entry->d_name); + av_log(s->avctx, AV_LOG_DEBUG, "probing device %s\n", s->devname); ret = v4l2_probe_driver(s); if (!ret) break; @@ -389,7 +387,7 @@ int ff_v4l2_m2m_codec_init(V4L2m2mPriv *priv) return ret; } - av_log(s->avctx, AV_LOG_INFO, "Using device %s\n", node); + av_log(s->avctx, AV_LOG_INFO, "Using device %s\n", s->devname); return v4l2_configure_contexts(s); } From patchwork Tue Mar 3 04:20:06 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 18013 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 7E78D44BB74 for ; Tue, 3 Mar 2020 06:38:14 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5E88668B59C; Tue, 3 Mar 2020 06:38:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 288CD68B01D for ; Tue, 3 Mar 2020 06:38:08 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id z11so2589220wro.9 for ; Mon, 02 Mar 2020 20:38:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=jSKmdaDznkzDW9Rs7oXXOG/IVUZEHwwBgDewqqe6E5w=; b=kun5eOLc55U3+ef0lLZlFDqOdtGeB3ilC9RUSAPMa4/tWURoafd3jiOBZHtLGFKePb 8qIkrqLBGN+fjlpHfwNPPEX0CypDsSktRrgXUBBu0dfzPK0bFU1ExGmM9DWfd4YGzbhT NKyfDHY1AxFOsVop52dB+OuuTDF0vCOEamjgoAV9TX7qZrmvjxdDZzqGIy6EvBBFt5vn GSwTG6jnOXSbYI9n8dlxryNddinBvbo+2wRvAnkiHOnPHrDfDfaSEZ3MznTW7K0NBmkJ 5sqnehh6zJeUWVcGf0FptdT1JNNhPj9wHUEot9sROdWFzFYjzrL7U7kXqu4KtKx2TgK0 NDpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=jSKmdaDznkzDW9Rs7oXXOG/IVUZEHwwBgDewqqe6E5w=; b=qYDgqq+8ckFi0mv7teUgDzNyligayzgu52axSztvfgqvIY2Gg5HnKqlWG1NI4OFrEp /Kvd6T29BujIXCzR9ryWDAX90q9/BPkrzJP/HTZJY5Xwxx7kmExibvdQiWdMUyx1rsy0 apFECwmqQsM5DMuoVoWzvr0xxi88d/3+iA3lKOFD93goTZkCgyViNzUcb9GCadzYcgfp O8Hmg8NHbQK9aUs9e5fsK1NLuiOiSy70iMuW8rVOvzzx24S/srQfdCXUP4rSZj9bRG4m 03G1M1LggTOK2rlv6K1caK5v9iu3Wwa2Pu61nv/N+A7APwaHIXCkUscRLWie/m7LIXyD mdYw== X-Gm-Message-State: ANhLgQ2Kc0wW8SHQAYomVh4nTJv+FtzK+2/LQ/Zl42WpK5gl983306cn iZ0XJR1hX4ElrOupM69ZWkjr8yEs X-Google-Smtp-Source: ADFU+vtXW2s7JFq4uWCyldv3Ykl9/9oPd6R3iMpU5/PWA0j3rI6UJxLgXDSifCnS7vBgrGM0JWfhjQ== X-Received: by 2002:a5d:4d48:: with SMTP id a8mr3063727wru.35.1583210287318; Mon, 02 Mar 2020 20:38:07 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1ab4b.dynamic.kabel-deutschland.de. [188.193.171.75]) by smtp.gmail.com with ESMTPSA id s12sm1733963wmj.39.2020.03.02.20.38.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 20:38:06 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 3 Mar 2020 05:20:06 +0100 Message-Id: <20200303042006.6370-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200303042006.6370-1-andreas.rheinhardt@gmail.com> References: <20200303042006.6370-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avformat/hls: Don't strdup non-null-terminated string 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" If an URI indicated that the data protocol was in use, it would be copied into a temporary buffer via strncpy(dst, src, strlen(src)), thereby ensuring that the trailing \0 would not be copied, despite dst being uninitialized. dst would then be av_strdup'ed, leading to potential segfaults. The solution to this is simple: Don't copy the URI in the temporary buffer at all, instead av_strdup it directly. This fixes a -Wstringop-truncation warning emitted by GCC 9.2. Signed-off-by: Andreas Rheinhardt --- This is honestly untested, as this is not covered by FATE. libavformat/hls.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavformat/hls.c b/libavformat/hls.c index 1f58e745a7..fc45719d1c 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -403,8 +403,7 @@ static struct segment *new_init_section(struct playlist *pls, const char *url_base) { struct segment *sec; - char *ptr; - char tmp_str[MAX_URL_SIZE]; + char tmp_str[MAX_URL_SIZE], *ptr = tmp_str; if (!info->uri[0]) return NULL; @@ -414,11 +413,11 @@ static struct segment *new_init_section(struct playlist *pls, return NULL; if (!av_strncasecmp(info->uri, "data:", 5)) { - strncpy(tmp_str, info->uri, strlen(info->uri)); + ptr = info->uri; } else { ff_make_absolute_url(tmp_str, sizeof(tmp_str), url_base, info->uri); } - sec->url = av_strdup(tmp_str); + sec->url = av_strdup(ptr); if (!sec->url) { av_free(sec); return NULL;