]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Proper escaping in more places
authorRaphael Michel <mail@raphaelmichel.de>
Wed, 14 Jun 2017 15:02:11 +0000 (17:02 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Wed, 14 Jun 2017 15:02:11 +0000 (17:02 +0200)
fints/message.py
fints/segments/auth.py
fints/segments/message.py

index b6be2ae8d5fd653149b7814f7f0f6855da04a833..62656cc2fb74268f4142e563761f7104fc09a1a9 100644 (file)
@@ -89,7 +89,7 @@ class FinTSResponse:
         return True
 
     def _get_segment_index(self, idx, seg):
-        seg = seg.split('+')
+        seg = split_for_data_groups(seg)
         if len(seg) > idx - 1:
             return seg[idx - 1]
         return None
@@ -104,9 +104,9 @@ class FinTSResponse:
     def get_bank_name(self):
         seg = self._find_segment('HIBPA')
         if seg:
-            seg = seg.split('+')
-            if len(seg) > 3:
-                return seg[3]
+            parts = split_for_data_groups(seg)
+            if len(parts) > 3:
+                return parts[3]
 
     def get_systemid(self):
         seg = self._find_segment('HISYN')
@@ -121,9 +121,9 @@ class FinTSResponse:
 
         res = {}
         seg = self._find_segment(name)
-        seg = seg.split('+')[1:]
-        for de in seg:
-            de = de.split(':')
+        parts = split_for_data_groups(seg)[1:]
+        for de in parts:
+            de = split_for_data_elements(de)
             res[de[0]] = de[2]
         return res
 
@@ -136,7 +136,7 @@ class FinTSResponse:
     def get_supported_tan_mechanisms(self):
         segs = self._find_segments('HIRMS')
         for s in segs:
-            seg = s.split('+')[1:]
+            seg = split_for_data_groups(s)[1:]
             for s in seg:
                 id, msg = s.split('::', 1)
                 if id == "3920":
@@ -148,7 +148,7 @@ class FinTSResponse:
     def _find_segment_for_reference(self, name, ref):
         segs = self._find_segments(name)
         for seg in segs:
-            segsplit = seg.split('+')[0].split(':')
+            segsplit = split_for_data_elements(split_for_data_groups(seg)[0])
             if segsplit[3] == str(ref.segmentno):
                 return seg
 
index 445f265c987f5c917223b8f64a961848c9a6c89f..16dc791d78cb461e5ceff44ef807f08faf8c97b9 100644 (file)
@@ -1,3 +1,4 @@
+from fints.utils import fints_escape
 from . import FinTS3Segment
 
 
@@ -12,7 +13,7 @@ class HKIDN(FinTS3Segment):
     def __init__(self, segmentno, blz, username, systemid=0, customerid=1):
         data = [
             '{}:{}'.format(self.country_code, blz),
-            username,
+            fints_escape(username),
             systemid,
             customerid
         ]
@@ -36,7 +37,7 @@ class HKVVB(FinTS3Segment):
 
     def __init__(self, segmentno, lang=LANG_DE):
         data = [
-            0, 0, lang, self.PRODUCT_NAME, self.PRODUCT_VERSION
+            0, 0, lang, fints_escape(self.PRODUCT_NAME), fints_escape(self.PRODUCT_VERSION)
         ]
         super().__init__(segmentno, data)
 
index 83a66f1827fb1204bce800cefe8f17bedfdc188b..0f79f32fc9d7bfa5f4762d54790b12c73c27a59f 100644 (file)
@@ -1,5 +1,6 @@
 import time
 
+from fints.utils import fints_escape
 from . import FinTS3Segment
 
 
@@ -120,7 +121,7 @@ class HNSHA(FinTS3Segment):
         data = [
             secref,
             '',
-            pin
+            fints_escape(pin)
         ]
         super().__init__(segno, data)