ModSecurity/src/operators/verify_cc.h
Gabor Berkes c6433df7b2 Refactor build system to use libpcre2 as the default
Updated the build system and related source files to use libpcre2 as the
default regex library instead of the deprecated libpcre. This change
ensures future compatibility and aligns with the library's maintenance status.

To build with the old libpcre, the `--with-pcre` configuration parameter
can be specified.
2024-12-10 10:16:14 +00:00

70 lines
1.6 KiB
C++

/*
* ModSecurity, http://www.modsecurity.org/
* Copyright (c) 2015 - 2021 Trustwave Holdings, Inc. (http://www.trustwave.com/)
*
* You may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* If any of the files related to licensing are missing or if you have any
* other questions related to licensing please contact Trustwave Holdings, Inc.
* directly using the email address security@modsecurity.org.
*
*/
#ifndef SRC_OPERATORS_VERIFY_CC_H_
#define SRC_OPERATORS_VERIFY_CC_H_
#ifndef WITH_PCRE
#define PCRE2_CODE_UNIT_WIDTH 8
#include <pcre2.h>
#else
#include <pcre.h>
#endif
#include <string>
#include <memory>
#include <utility>
#include "src/operators/operator.h"
namespace modsecurity {
namespace operators {
class VerifyCC : public Operator {
public:
/** @ingroup ModSecurity_Operator */
explicit VerifyCC(std::unique_ptr<RunTimeString> param)
: Operator("VerifyCC", std::move(param)),
#ifndef WITH_PCRE
m_pc(NULL),
m_pcje(PCRE2_ERROR_JIT_BADOPTION) { }
#else
m_pc(NULL),
m_pce(NULL) { }
#endif
~VerifyCC() override;
bool evaluate(Transaction *t, RuleWithActions *rule,
const std::string& input,
RuleMessage &ruleMessage) override;
bool init(const std::string &param, std::string *error) override;
private:
#ifndef WITH_PCRE
pcre2_code *m_pc;
int m_pcje;
#else
pcre *m_pc;
pcre_extra *m_pce;
#endif
static int luhnVerify(const char *ccnumber, int len);
};
} // namespace operators
} // namespace modsecurity
#endif // SRC_OPERATORS_VERIFY_CC_H_