1 : // Copyright 2015 Google Inc. All Rights Reserved.
2 : //
3 : // Licensed under the Apache License, Version 2.0 (the "License");
4 : // you may not use this file except in compliance with the License.
5 : // You may obtain a copy of the License at
6 : //
7 : // http://www.apache.org/licenses/LICENSE-2.0
8 : //
9 : // Unless required by applicable law or agreed to in writing, software
10 : // distributed under the License is distributed on an "AS IS" BASIS,
11 : // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 : // See the License for the specific language governing permissions and
13 : // limitations under the License.
14 :
15 : #ifndef SYZYGY_REFINERY_VALIDATORS_EXCEPTION_HANDLER_VALIDATOR_H_
16 : #define SYZYGY_REFINERY_VALIDATORS_EXCEPTION_HANDLER_VALIDATOR_H_
17 :
18 : #include "base/macros.h"
19 : #include "syzygy/refinery/validators/validator.h"
20 :
21 : namespace refinery {
22 :
23 : // A validator for a thread's exception handler chain. This implementation
24 : // relies on the presence of the TEB to provide the first handler (this is the
25 : // case for dumps captured with MiniDumpWithProcessThreadData).
26 : // TODO(manzagop): move the extraction of the exception chain to an analyzer.
27 : // TODO(manzagop): validate exception handlers are in the image's allowed set.
28 : class ExceptionHandlerValidator : public Validator {
29 : public:
30 E : ExceptionHandlerValidator() {}
31 :
32 : ValidationResult Validate(ProcessState* process_state,
33 : ValidationReport* report) override;
34 :
35 : private:
36 : DISALLOW_COPY_AND_ASSIGN(ExceptionHandlerValidator);
37 : };
38 :
39 : } // namespace refinery
40 :
41 : #endif // SYZYGY_REFINERY_VALIDATORS_EXCEPTION_HANDLER_VALIDATOR_H_
|