Kea 2.5.7
isc::util::str::StringSanitizer Class Reference

Implements a regular expression based string scrubber. More...

#include <strutil.h>

Public Member Functions

 StringSanitizer (const std::string &char_set, const std::string &char_replacement)
 ~StringSanitizer ()
std::string scrub (const std::string &original)
 Returns a scrubbed copy of a given string.

Static Public Attributes

static const uint32_t MAX_DATA_SIZE = 4096
 The maximum size for regex parameters.

Detailed Description

Implements a regular expression based string scrubber.

The implementation uses C++11 regex IF the environment supports it (tested in If not it falls back to C lib regcomp/regexec. Older compilers, such as pre Gnu g++ 4.9.0, provided only experimental implementations of regex which are recognized as buggy.

Definition at line 311 of file strutil.h.

Constructor & Destructor Documentation

◆ StringSanitizer()

isc::util::str::StringSanitizer::StringSanitizer ( const std::string &  char_set,
const std::string &  char_replacement 


Compiles the given character set into a regular expression, and retains the given character replacement. Thereafter, the instance may be used to scrub an arbitrary number of strings.

char_setstring containing a regular expression (POSIX extended syntax) that describes the characters to replace. If you wanted to sanitize hostnames for example, you could specify the inversion of valid characters "[^A-Za-z0-9_-]".
char_replacementstring of one or more characters to use as the replacement for invalid characters.
BadValueif given an invalid regular expression

Definition at line 438 of file

◆ ~StringSanitizer()

isc::util::str::StringSanitizer::~StringSanitizer ( )


Destroys the implementation instance.

Definition at line 443 of file

Member Function Documentation

◆ scrub()

std::string isc::util::str::StringSanitizer::scrub ( const std::string &  original)

Returns a scrubbed copy of a given string.

Replaces all occurrences of characters described by the regular expression with the character replacement.

originalthe string to scrub
Unexpectedif an error occurs during scrubbing

Definition at line 447 of file

Member Data Documentation


const uint32_t isc::util::str::StringSanitizer::MAX_DATA_SIZE = 4096

The maximum size for regex parameters.

The regex engine is implemented using recursion and can cause stack overflow if the input data is too large. An arbitrary size of 4096 should be enough for all cases.

Definition at line 351 of file strutil.h.

Referenced by isc::util::str::StringSanitizerImpl::StringSanitizerImpl().

The documentation for this class was generated from the following files: