[FFmpeg-devel] 回复: [PATCH v1] libavdevice/gdigrab: change hwnd tail check fail logic to !=null

Cai Eaphone cyfdel at hotmail.com
Wed Aug 7 19:57:17 EEST 2024


this message seems not attach to the mail successfully, manually loop it:

what the patch does:
        fix gdigrab capture a window with hwnd shows "Invalid window
        handle x, must be a vlid integer", althought a valid integer is
        input

why:
        line 284 of libavdevice/gdigrab.c, one of the condition leads to
        check failed is p[0]='\0'. if a integer only string is process,
        the p[0] after strtoull process will be null which equal to
        '\0', otherwise, a non-integer string will make p[0] not null to
        pass the check

how:
        change p[0]=='\0' to p[0]!='\0' will works. no any side effect

reproduce and verify:
        a simple command: ffmpeg -f gdigrab -i hwnd=12345
        * althought a workaround command will work currently:
        *       ffmpeg -f gdigrab -i hwnd=12345x. (x could be any char)
________________________________
发件人: cyfdel at hotmail.com <cyfdel at hotmail.com>
发送时间: 2024年8月7日 15:58
收件人: ffmpeg-devel at ffmpeg.org <ffmpeg-devel at ffmpeg.org>
抄送: eaphone <cyfdel at hotmail.com>
主题: [PATCH v1] libavdevice/gdigrab: change hwnd tail check fail logic to !=null

From: eaphone <cyfdel at hotmail.com>

---
 libavdevice/gdigrab.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libavdevice/gdigrab.c b/libavdevice/gdigrab.c
index c91661c556..08a41c304b 100644
--- a/libavdevice/gdigrab.c
+++ b/libavdevice/gdigrab.c
@@ -281,7 +281,7 @@ gdigrab_read_header(AVFormatContext *s1)

         hwnd = (HWND) strtoull(name, &p, 0);

-        if (p == NULL || p == name || p[0] == '\0')
+        if (p == NULL || p == name || p[0] != '\0')
         {
             av_log(s1, AV_LOG_ERROR,
                    "Invalid window handle '%s', must be a valid integer.\n", name);
--
2.45.2.windows.1



More information about the ffmpeg-devel mailing list