Make valid_netbios_name() check a bit stricter.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 5 Apr 2009 21:17:43 +0000 (23:17 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 5 Apr 2009 22:25:03 +0000 (00:25 +0200)
source4/scripting/python/samba/__init__.py
source4/scripting/python/samba/tests/__init__.py

index c5827b96e0e134843a9739a64a240b9e2f12afc8..3ecb758595e2836d1ccb971ac661ef11bcf2f21f 100644 (file)
@@ -233,10 +233,12 @@ def check_all_substituted(text):
 
 def valid_netbios_name(name):
     """Check whether a name is valid as a NetBIOS name. """
-    # FIXME: There are probably more constraints here. 
-    # crh has a paragraph on this in his book (1.4.1.1)
+    # See crh's book (1.4.1.1)
     if len(name) > 15:
         return False
+    for x in name:
+        if not x.isalnum() and not x in " !#$%&'()-.@^_{}~":
+            return False
     return True
 
 version = glue.version
index b342b93c498d008f25f7ca7b7287af31ec5bc595..524c3a3b914ff6521f340b9821c2230fddd884a9 100644 (file)
@@ -96,3 +96,15 @@ class RpcInterfaceTestCase(unittest.TestCase):
 
     def get_credentials(self):
         return cmdline_credentials
+
+
+class ValidNetbiosNameTests(unittest.TestCase):
+
+    def test_valid(self):
+        self.assertTrue(valid_netbios_name("FOO"))
+
+    def test_too_long(self):
+        self.assertFalse(valid_netbios_name("FOO"*10))
+
+    def test_invalid_characters(self):
+        self.assertFalse(valid_netbios_name("()BLA"))