Dmitry Timoshkov : Add a check for icinfo->fccType in DRV_OPEN message handler of builtin

Alexandre Julliard julliard at wine.codeweavers.com
Fri Feb 3 05:39:25 CST 2006


Module: wine
Branch: refs/heads/master
Commit: c13ae562892841a680ee68d965c8deadc47c15b2
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=c13ae562892841a680ee68d965c8deadc47c15b2

Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date:   Fri Feb  3 12:29:26 2006 +0100

Add a check for icinfo->fccType in DRV_OPEN message handler of builtin
video codecs.

---

 dlls/iccvid/iccvid.c        |    7 +++++++
 dlls/msrle32/msrle32.c      |    2 ++
 dlls/msvidc32/msvideo1.c    |    7 +++++++
 dlls/msvideo/msvideo_main.c |    2 +-
 4 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/dlls/iccvid/iccvid.c b/dlls/iccvid/iccvid.c
index 06915d1..ddb0d5b 100644
--- a/dlls/iccvid/iccvid.c
+++ b/dlls/iccvid/iccvid.c
@@ -961,7 +961,13 @@ LRESULT WINAPI ICCVID_DriverProc( DWORD_
         return 0;
 
     case DRV_OPEN:
+    {
+        ICINFO *icinfo = (ICINFO *)lParam2;
+
         TRACE("Opened\n");
+
+        if (icinfo && icinfo->fccType != ICTYPE_VIDEO) return 0;
+
         info = ICCVID_Alloc( sizeof (ICCVID_Info), 1 );
         if( info )
         {
@@ -969,6 +975,7 @@ LRESULT WINAPI ICCVID_DriverProc( DWORD_
             info->cvinfo = NULL;
         }
         return (LRESULT) info;
+    }
 
     case ICM_GETINFO:
         return ICCVID_GetInfo( info, (ICINFO *)lParam1, (DWORD)lParam2 );
diff --git a/dlls/msrle32/msrle32.c b/dlls/msrle32/msrle32.c
index 7a4deca..3fb6c62 100644
--- a/dlls/msrle32/msrle32.c
+++ b/dlls/msrle32/msrle32.c
@@ -1099,6 +1099,8 @@ static CodecInfo* Open(LPICOPEN icinfo)
     return (LPVOID)0xFFFF0000;
   }
 
+  if (icinfo->fccType != ICTYPE_VIDEO) return NULL;
+
   TRACE("(%p = {%lu,0x%08lX(%4.4s),0x%08lX(%4.4s),0x%lX,0x%lX,...})\n", icinfo,
 	icinfo->dwSize,	icinfo->fccType, (char*)&icinfo->fccType,
 	icinfo->fccHandler, (char*)&icinfo->fccHandler,
diff --git a/dlls/msvidc32/msvideo1.c b/dlls/msvidc32/msvideo1.c
index 0a79139..c639d20 100644
--- a/dlls/msvidc32/msvideo1.c
+++ b/dlls/msvidc32/msvideo1.c
@@ -497,7 +497,13 @@ LRESULT WINAPI CRAM_DriverProc( DWORD_PT
         break;
 
     case DRV_OPEN:
+    {
+        ICINFO *icinfo = (ICINFO *)lParam2;
+
         TRACE("Opened\n");
+
+        if (icinfo && icinfo->fccType != ICTYPE_VIDEO) return 0;
+
         info = HeapAlloc( GetProcessHeap(), 0, sizeof (Msvideo1Context) );
         if( info )
         {
@@ -506,6 +512,7 @@ LRESULT WINAPI CRAM_DriverProc( DWORD_PT
         }
         r = (LRESULT) info;
         break;
+    }
 
     case ICM_GETINFO:
         r = CRAM_GetInfo( info, (ICINFO *)lParam1, (DWORD)lParam2 );
diff --git a/dlls/msvideo/msvideo_main.c b/dlls/msvideo/msvideo_main.c
index 3059243..0479210 100644
--- a/dlls/msvideo/msvideo_main.c
+++ b/dlls/msvideo/msvideo_main.c
@@ -400,7 +400,7 @@ HIC MSVIDEO_OpenFunction(DWORD fccType, 
     icopen.dwSize		= sizeof(ICOPEN);
     icopen.fccType		= fccType;
     icopen.fccHandler	        = fccHandler;
-    icopen.dwVersion            = 0x00001000; /* FIXME */
+    icopen.dwVersion            = ICVERSION;
     icopen.dwFlags		= wMode;
     icopen.dwError              = 0;
     icopen.pV1Reserved          = NULL;




More information about the wine-cvs mailing list