filesystem: be more strict in method add_file()

The file identifier of a file is strictly defined as a two digit
hexadecimal number. Do not allow adding child files that violate this
constraint.

Change-Id: I096907285b742e611d221b03ba067ea2522e7e52
Related: OS#4963
diff --git a/pySim/filesystem.py b/pySim/filesystem.py
index d468808..f6dddb6 100644
--- a/pySim/filesystem.py
+++ b/pySim/filesystem.py
@@ -31,7 +31,7 @@
 from cmd2 import CommandSet, with_default_category, with_argparser
 import argparse
 
-from pySim.utils import sw_match, h2b, b2h
+from pySim.utils import sw_match, h2b, b2h, is_hex
 from pySim.exceptions import *
 
 class CardFile(object):
@@ -144,6 +144,8 @@
         """Add a child (DF/EF) to this DF"""
         if not isinstance(child, CardFile):
             raise TypeError("Expected a File instance")
+        if not is_hex(child.fid, minlen = 4, maxlen = 4):
+            raise ValueError("File name %s is not a valid fid" % (child.fid))
         if child.name in CardFile.RESERVED_NAMES:
             raise ValueError("File name %s is a reserved name" % (child.name))
         if child.fid in CardFile.RESERVED_FIDS: