blob: d8373cbac688caa4cc67dc18e826d27dff83c385 [file] [log] [blame] [edit]
From 3ba1b40e5a828a26a1df1b49cdc87395f3274c81 Mon Sep 17 00:00:00 2001
From: Mek <michael.karpeles@gmail.com>
Date: Wed, 7 May 2025 15:14:44 -0400
Subject: [PATCH] Address CVE-2025-3818 (#807)
* Address CVE-2025-3818
Co-authored-by: Scott Barnes <scottreidbarnes@gmail.com>
Upstream: https://github.com/webpy/webpy/commit/3ba1b40e5a828a26a1df1b49cdc87395f3274c81
Fixes CVE-2025-3818: https://github.com/advisories/GHSA-9g47-36rw-gjh2
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
---
web/db.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/web/db.py b/web/db.py
index 5284f8d0..ba3e12c5 100644
--- a/web/db.py
+++ b/web/db.py
@@ -1198,10 +1198,18 @@ def _process_insert_query(self, query, tablename, seqname):
seqname = None
if seqname:
- query += "; SELECT currval('%s')" % seqname
+ query += self.get_sequence_query(seqname)
return query
+ def get_sequence_query(self, seqname):
+ import re
+ # Ensure the sequence name is valid
+ if not re.match(r'^[a-zA-Z_][a-zA-Z0-9_$]*$', seqname):
+ raise ValueError(f"Invalid sequence name: {seqname}")
+ return SQLQuery("; SELECT currval(%s)", seqname)
+
+
def _get_all_sequences(self):
"""Query postgres to find names of all sequences used in this database."""
if self._sequences is None: