summary refs log blame commit diff stats
path: root/doc/manual/taint.txt
blob: 492686f31a959cde4d06dfc7b2253eb96cb8f0db (plain) (tree)
1
2
3
4
5
6
7
8


          

                                                                      

                                              
                                                                       






                                                                       
                                                                  



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