andylamp commented on code in PR #32867:
URL: https://github.com/apache/airflow/pull/32867#discussion_r1285391406


##########
airflow/models/connection.py:
##########
@@ -43,6 +47,30 @@ def parse_netloc_to_hostname(*args, **kwargs):
     return _parse_netloc_to_hostname(*args, **kwargs)
 
 
+def sanitize_conn_id(conn_id: str | None) -> str | None:
+    """
+    Sanitizes the connection id and allows only specific characters to be 
within. Namely,
+    it allows alphanumeric characters plus the symbols @,#,$,%,&,!,-,_,. and 
() from 1
+    and up to 200 consecutive matches.
+
+    The character selection is such that it prevents the injection of 
javascript or
+    executable bits in order to avoid any awkward behavior in the front-end.
+
+    :param conn_id: The connection id to sanitize.
+    :return: the sanitized string, `None` otherwise.
+    """
+    # check if `conn_id` or our match group is `None`
+    if conn_id is None or (res := re2.match(_RE_SANITIZE_CONN_ID, conn_id)) is 
None:
+        # comment, so it works...?
+        # log.warning(
+        #     "We failed to match `conn_id` with value: %s to the allowed 
pattern or it was None",
+        #     conn_id,
+        # )

Review Comment:
   It will throw an exception because of the non-null requirement imposed by 
the SQLAlchemy. This is because if we do not match, None is returned and thus 
will trigger this.
   
   The reason for logging this was to have a traceback, however looking at how 
the tests are structured and given they look at a specific log message I don't 
know how to properly log this without breaking things... Happy to take 
suggestions 😀 !



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to