Author: janderwald
Date: Sat Feb 22 09:53:25 2014
New Revision: 62285
URL: 
http://svn.reactos.org/svn/reactos?rev=62285&view=rev
Log:
[KS]
- Call Property handler guarded in seh block
- Needs to be done in portcls too
-
Modified:
    trunk/reactos/drivers/ksfilter/ks/property.c
Modified: trunk/reactos/drivers/ksfilter/ks/property.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/proper…
==============================================================================
--- trunk/reactos/drivers/ksfilter/ks/property.c        [iso-8859-1] (original)
+++ trunk/reactos/drivers/ksfilter/ks/property.c        [iso-8859-1] Sat Feb 22 09:53:25
2014
@@ -7,6 +7,9 @@
  */
 #include "precomp.h"
+
+/* SEH support with PSEH */
+#include <pseh/pseh2.h>
 #define NDEBUG
 #include <debug.h>
@@ -280,8 +283,16 @@
             KSPROPERTY_ITEM_IRP_STORAGE(Irp) = PropertyItem;
         }
-        /* call property handler */
-        Status = PropertyHandler(Irp, Property, (OutputBufferLength > 0 ?
Irp->AssociatedIrp.SystemBuffer : NULL));
+        _SEH2_TRY
+        {
+            /* call property handler */
+            Status = PropertyHandler(Irp, Property, (OutputBufferLength > 0 ?
Irp->AssociatedIrp.SystemBuffer : NULL));
+        }
+        _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+        {
+            _SEH2_YIELD(return _SEH2_GetExceptionCode());
+        }
+        _SEH2_END;
         if (Status == STATUS_BUFFER_TOO_SMALL)
         {
@@ -297,9 +308,16 @@
                     /* no memory */
                     return STATUS_INSUFFICIENT_RESOURCES;
                 }
-
-                /* re-call property handler */
-                Status = PropertyHandler(Irp, Property,
Irp->AssociatedIrp.SystemBuffer);
+                _SEH2_TRY
+                {
+                    /* re-call property handler */
+                    Status = PropertyHandler(Irp, Property,
Irp->AssociatedIrp.SystemBuffer);
+                }
+                _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+                {
+                    Status =  _SEH2_GetExceptionCode();
+                }
+                _SEH2_END;
             }
         }
     }