File CVE-2024-36039.patch of Package python-PyMySQL.34022

From 521e40050cb386a499f68f483fefd144c493053c Mon Sep 17 00:00:00 2001
From: Inada Naoki <songofacandy@gmail.com>
Date: Sat, 18 May 2024 11:33:30 +0900
Subject: [PATCH] forbid dict parameter

---
 pymysql/converters.py            | 6 +-----
 pymysql/tests/test_connection.py | 7 +++++--
 2 files changed, 6 insertions(+), 7 deletions(-)

Index: PyMySQL-0.7.11/pymysql/converters.py
===================================================================
--- PyMySQL-0.7.11.orig/pymysql/converters.py
+++ PyMySQL-0.7.11/pymysql/converters.py
@@ -28,11 +28,7 @@ def escape_item(val, charset, mapping=No
     return val
 
 def escape_dict(val, charset, mapping=None):
-    n = {}
-    for k, v in val.items():
-        quoted = escape_item(v, charset, mapping)
-        n[k] = quoted
-    return n
+    raise TypeError("dict can not be used as parameter")
 
 def escape_sequence(val, charset, mapping=None):
     n = []
Index: PyMySQL-0.7.11/pymysql/tests/test_connection.py
===================================================================
--- PyMySQL-0.7.11.orig/pymysql/tests/test_connection.py
+++ PyMySQL-0.7.11/pymysql/tests/test_connection.py
@@ -543,13 +543,17 @@ class TestEscape(base.PyMySQLTestCase):
 
         self.assertRaises(TypeError, con.escape, 42, {})
 
++    def test_escape_dict_raise_typeerror(self):
++        """con.escape(dict) should raise TypeError"""
     def test_escape_dict_value(self):
         con = self.connections[0]
         cur = con.cursor()
 
         mapping = con.encoders.copy()
         mapping[Foo] = escape_foo
-        self.assertEqual(con.escape({'foo': Foo()}, mapping), {'foo': "bar"})
+        # self.assertEqual(con.escape({'foo': Foo()}, mapping), {'foo': "bar"})
+        with self.assertRaises(TypeError):
+            con.escape({"foo": Foo()})
 
     def test_escape_list_item(self):
         con = self.connections[0]
openSUSE Build Service is sponsored by