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); }