27 lines
806 B
C++
27 lines
806 B
C++
// Copyright 2017 PDFium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef XFA_FXFA_FM2JS_CXFA_FMTOJAVASCRIPTDEPTH_H_
|
|
#define XFA_FXFA_FM2JS_CXFA_FMTOJAVASCRIPTDEPTH_H_
|
|
|
|
class CXFA_FMToJavaScriptDepth {
|
|
public:
|
|
CXFA_FMToJavaScriptDepth() { depth_++; }
|
|
~CXFA_FMToJavaScriptDepth() { depth_--; }
|
|
|
|
bool IsWithinMaxDepth() const { return depth_ <= kMaxDepth; }
|
|
|
|
static void Reset();
|
|
|
|
private:
|
|
// Arbitarily picked by looking at how deep a translation got before hitting
|
|
// the getting fuzzer memory limits. Should be larger then |kMaxParseDepth| in
|
|
// cxfa_fmparser.cpp.
|
|
const unsigned long kMaxDepth = 5000;
|
|
|
|
static unsigned long depth_;
|
|
};
|
|
|
|
#endif // XFA_FXFA_FM2JS_CXFA_FMTOJAVASCRIPTDEPTH_H_
|