summary refs log tree commit diff stats
path: root/doc/manual/taint.txt
blob: 84f0c68b148f57d87bc0733ecf0501b4c14a20dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Taint mode
==========

The Nim compiler and most parts of the standard library support 
a taint mode. Input strings are declared with the `TaintedString`:idx: 
string type declared in the ``system`` module.

If the taint mode is turned on (via the ``--taintMode:on`` command line 
option) it is a distinct string type which helps to detect input
validation errors:

.. code-block:: nim
  echo "your name: "
  var name: TaintedString = stdin.readline
  # it is safe here to output the name without any input validation, so
  # we simply convert `name` to string to make the compiler happy: 
  echo "hi, ", name.string

If the taint mode is turned off, ``TaintedString`` is simply an alias for
``string``.