Kea  2.3.5-git
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)
 Constructor. More...
 
 ~StringSanitizer ()
 Destructor. More...
 
std::string scrub (const std::string &original)
 Returns a scrubbed copy of a given string. More...
 

Static Public Attributes

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

Detailed Description

Implements a regular expression based string scrubber.

The implementation uses C++11 regex IF the environment supports it (tested in configure.ac). 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 
)

Constructor.

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.

Parameters
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.
Exceptions
BadValueif given an invalid regular expression

Definition at line 438 of file strutil.cc.

◆ ~StringSanitizer()

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

Destructor.

Destroys the implementation instance.

Definition at line 443 of file strutil.cc.

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.

Parameters
originalthe string to scrub
Exceptions
Unexpectedif an error occurs during scrubbing

Definition at line 447 of file strutil.cc.

Member Data Documentation

◆ MAX_DATA_SIZE

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

The maximum size for regex parameters.

Note
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.


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