diff mbox series

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

Message ID TYAPR01MB32773086048477B9D134C090DEB82@TYAPR01MB3277.jpnprd01.prod.outlook.com
State New
Headers show
Series [FFmpeg-devel] 回复: [PATCH v1] libavdevice/gdigrab: change hwnd tail check fail logic to !=null | expand

Checks

Context Check Description
yinshiyou/configure_loongarch64 warning Failed to apply patch

Commit Message

Cai Eaphone Aug. 7, 2024, 4:57 p.m. UTC
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@hotmail.com <cyfdel@hotmail.com>
发送时间: 2024年8月7日 15:58
收件人: ffmpeg-devel@ffmpeg.org <ffmpeg-devel@ffmpeg.org>
抄送: eaphone <cyfdel@hotmail.com>
主题: [PATCH v1] libavdevice/gdigrab: change hwnd tail check fail logic to !=null

From: eaphone <cyfdel@hotmail.com>

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

--
2.45.2.windows.1
diff mbox series

Patch

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