From patchwork Wed May 25 22:02:33 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 35930 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6914:b0:82:6b11:2509 with SMTP id q20csp68461pzj; Wed, 25 May 2022 15:02:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzdDGx6sYupm+KEPWDf4l8kYMbWG9hEw8EXbqbaE51pnSmAa3gx2Z/AqglWKniJHO8Imi46 X-Received: by 2002:a17:907:3fa2:b0:6fe:d043:3fd1 with SMTP id hr34-20020a1709073fa200b006fed0433fd1mr17261988ejc.700.1653516169574; Wed, 25 May 2022 15:02:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653516169; cv=none; d=google.com; s=arc-20160816; b=YGZAn/mxFpm7bgaL8MyBXAZllwbjhm+FiifYpA+nia6IDHmGVxkkP5S/oQSJvQ8Gyv hzb5TVwd9WoUCoaB/EXIqg2AvMbWOWO2UMMUTGMnZZPQ/kY+Ejft3YKXSyC2av/35fma 7oYN5m3BVivPADrupM7aOLjVUG4z4wSa9Y1UuJa1t+9+NDQXcDTlLNUG1y2xPTNMvp9w bLgdJToswOcf6gxePc2fDSa5s3HAcm9oHIjsCi6si/bNYhS2U3BDp9o23ztSZnmvLn7u r+eM0ZQrFGuIjw/zOFWi2s74gVJy2RHmh0V2ocS6gwv5R89J1yr4i85bYSTQC3HitSFA AijA== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=5scTMW28H7FFpAMvciIdJ7xldJ2seWlz6vtWwNJdiPM=; b=VOLfXoObWsgx/v0e447JWBnIfzOSbYTJNshORECK/OiFJjEBdMwR7n8VMIXvOYL3A9 bWTcaN+X9zJK33uTswDBMJZ4UC0AZ43WAB/sjNu+DSQzPon5gaoIphL7xvNPI6WtMPgT uDpACsk+sSaeKksMfsj3KojW29qAKJuvii9F9roayk3oEy2yIuOm1fzz22nQf/qa9sFu TemZGY/kwhi+Q07DgHhfTEDCgaZavz1DsItHu6wJxrI3y17GvyLgR5re5ZMb05IKqPOA MzrXltB1jjxBeHnJx8fnvO/vGk7QecV3PyhOFqj6jt4lF4N7P1hbzvFw6JRxVNPcV3Md Y3Cw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@martin-st.20210112.gappssmtp.com header.s=20210112 header.b=7wRbeaoR; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h20-20020a1709060f5400b006ff2415fc89si124186ejj.485.2022.05.25.15.02.43; Wed, 25 May 2022 15:02:49 -0700 (PDT) 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=@martin-st.20210112.gappssmtp.com header.s=20210112 header.b=7wRbeaoR; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4FC5D68B58F; Thu, 26 May 2022 01:02:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f175.google.com (mail-lj1-f175.google.com [209.85.208.175]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 98C2B68B468 for ; Thu, 26 May 2022 01:02:34 +0300 (EEST) Received: by mail-lj1-f175.google.com with SMTP id u7so25244247ljd.11 for ; Wed, 25 May 2022 15:02:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=vf7aiNgJwLmyKK6lRvXfp842rMnqQlGebx+zhVq2r2E=; b=7wRbeaoRBcXhzX4EAIMSUln+ylP31iVmHxth5aXpoBm9KE/caKyiyIAPDL+qjUzQck N8mEo+WdtEfrmp9/OaVBNZG2M7uGPVxh2f9zHmDEO5u+O7707AhCwhiCcHMSMb27OKv0 hrbMFzb6+V/Jm30Yf1PChGE/0M8k3U9fX6QxC0G4zZHuayLdFx5iIyF0iae9nfqwIS6G wpN/dg9P9uFY+gLUqs7eTd2l/Cu/dDWvrkYNQ7Jp8X7Tmc+WIYZS0/MumIon/6JzWmTY irHrR9xii6XZNQ7a+Duj7IMKGcRL8e3fFeMnl9tr7HNCfsFevIJbbBvFfdV70V7p9ehe EPhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=vf7aiNgJwLmyKK6lRvXfp842rMnqQlGebx+zhVq2r2E=; b=OkQxBZlee8kzcrCgRhtuZKVJlLpUAnChDGKZZ1swYmgWZ/ko1pke0Cu69X8xib1Pow ANilRW+TPdpCzn3QjaLBzcGhatumxCyqXZUl6u9HB1Gh5LaWTO/pGwhxgUAU3VTx+2gd JiLIL/SWtKXXr911Jaf3zAbZGdfvIffqPunnAqpc3W84tM9Gqs7mTUMh5aVdOVtG1OC0 nMpAW2IFmlHBXTddLh5USHCd/6WhE8TtlsOfZgwEwjxK7agY5JYWUrBrp2XiFULpfH8g syQSlo+oH5vp0bTw5hYxP4zGcH6ei5PlH0ToPAdhKPZO2BxJHL+GG5FSNwnA56VA+kgq 01/w== X-Gm-Message-State: AOAM530aDUNq1EoOO8eMH+TbwNNtni/d0rTIbHm8iDTaeclR5I8mXlWo t4DgN4q9izDSFrrzUB6zmMsVq9t/zhp3wxu/ X-Received: by 2002:a2e:8705:0:b0:253:d896:3000 with SMTP id m5-20020a2e8705000000b00253d8963000mr18597158lji.425.1653516153860; Wed, 25 May 2022 15:02:33 -0700 (PDT) Received: from localhost.localdomain (dsl-tkubng21-58c01c-243.dhcp.inet.fi. [88.192.28.243]) by smtp.gmail.com with ESMTPSA id a23-20020a056512201700b0047255d210f2sm3324261lfb.33.2022.05.25.15.02.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 May 2022 15:02:33 -0700 (PDT) From: =?utf-8?q?Martin_Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 26 May 2022 01:02:33 +0300 Message-Id: <20220525220233.3813609-1-martin@martin.st> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] mfenc: Use dlopen instead of LoadLibrary for loading mfplat.dll 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: =?utf-8?q?Martin_Storsj=C3=B6?= , trystan.mata@tytanium.xyz, timo@rothenpieler.org Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: e95Ct3VLN+mq The dlopen wrapper contains code to make loading libraries safer, to avoid loading a potentially malicious DLL with the same name. Signed-off-by: Martin Storsjö --- v2: Use dlsym too, for consistency. --- libavcodec/mfenc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libavcodec/mfenc.c b/libavcodec/mfenc.c index 17d0ec60bd..13ed7b3e11 100644 --- a/libavcodec/mfenc.c +++ b/libavcodec/mfenc.c @@ -29,6 +29,7 @@ #include "libavutil/time.h" #include "codec_internal.h" #include "internal.h" +#include "compat/w32dlfcn.h" typedef struct MFContext { AVClass *av_class; @@ -1131,7 +1132,7 @@ static int mf_init_encoder(AVCodecContext *avctx) #if !HAVE_UWP #define LOAD_MF_FUNCTION(context, func_name) \ - context->functions.func_name = (void *)GetProcAddress(context->library, #func_name); \ + context->functions.func_name = (void *)dlsym(context->library, #func_name); \ if (!context->functions.func_name) { \ av_log(context, AV_LOG_ERROR, "DLL mfplat.dll failed to find function "\ #func_name "\n"); \ @@ -1158,7 +1159,7 @@ static int mf_load_library(AVCodecContext *avctx) MFContext *c = avctx->priv_data; #if !HAVE_UWP - c->library = LoadLibraryA("mfplat.dll"); + c->library = dlopen("mfplat.dll", 0); if (!c->library) { av_log(c, AV_LOG_ERROR, "DLL mfplat.dll failed to open\n"); @@ -1191,7 +1192,7 @@ static int mf_close(AVCodecContext *avctx) if (c->library) ff_free_mf(&c->functions, &c->mft); - FreeLibrary(c->library); + dlclose(c->library); c->library = NULL; #else ff_free_mf(&c->functions, &c->mft);