new file mode 100644
@@ -0,0 +1,90 @@
+From 911e10a2e8e677c3982d392e185b7d9b3e574401 Mon Sep 17 00:00:00 2001
+From: Christian Brabandt <cb@256bit.org>
+Date: Sun, 21 Jun 2026 19:50:56 +0000
+Subject: [PATCH 14/17] patch 9.2.0699: [security]: possible code execution
+ with python complete
+
+Problem: [security]: possible code execution with python complete
+ (morningbread)
+Solution: Use repr() to quote the doc strings correctly
+
+Github Security Advisory:
+https://github.com/vim/vim/security/advisories/GHSA-ppj8-wqjf-6fp3
+
+Supported by AI
+
+Signed-off-by: Christian Brabandt <cb@256bit.org>
+
+Upstream-Status: Backport [https://github.com/vim/vim/commit/cce141c42740f122dd8486ae04e21c2a81016ba8]
+CVE: CVE-2026-57456
+Signed-off-by: Siddharth Doshi <sdoshi@mvista.com>
+---
+ runtime/autoload/python3complete.vim | 6 +++---
+ runtime/autoload/pythoncomplete.vim | 6 +++---
+ 2 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/runtime/autoload/python3complete.vim b/runtime/autoload/python3complete.vim
+index 56ee636b8d..e7cd149cdd 100644
+--- a/runtime/autoload/python3complete.vim
++++ b/runtime/autoload/python3complete.vim
+@@ -326,7 +326,7 @@ class Scope(object):
+
+ def get_code(self):
+ str = ""
+- if len(self.docstr) > 0: str += '"""'+self.docstr+'"""\n'
++ if len(self.docstr) > 0: str += repr(self.docstr)+'\n'
+ str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n'
+ for sub in self.subscopes:
+ str += sub.get_code()
+@@ -369,7 +369,7 @@ class Class(Scope):
+ if _DOTTED_NAME_RE.match(s.strip())]
+ if len(safe_supers) > 0: str += '(%s)' % ','.join(safe_supers)
+ str += ':\n'
+- if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n'
++ if len(self.docstr) > 0: str += self.childindent()+repr(self.docstr)+'\n'
+ if len(self.subscopes) > 0:
+ for s in self.subscopes: str += s.get_code()
+ else:
+@@ -392,7 +392,7 @@ class Function(Scope):
+ safe_params = [p for p in safe_params if p]
+ str = "%sdef %s(%s):\n" % \
+ (self.currentindent(),self.name,','.join(safe_params))
+- if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n'
++ if len(self.docstr) > 0: str += self.childindent()+repr(self.docstr)+'\n'
+ str += "%spass\n" % self.childindent()
+ return str
+
+diff --git a/runtime/autoload/pythoncomplete.vim b/runtime/autoload/pythoncomplete.vim
+index 0f41405c0e..abef32faf2 100644
+--- a/runtime/autoload/pythoncomplete.vim
++++ b/runtime/autoload/pythoncomplete.vim
+@@ -341,7 +341,7 @@ class Scope(object):
+
+ def get_code(self):
+ str = ""
+- if len(self.docstr) > 0: str += '"""'+self.docstr+'"""\n'
++ if len(self.docstr) > 0: str += repr(self.docstr)+'\n'
+ str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n'
+ for sub in self.subscopes:
+ str += sub.get_code()
+@@ -384,7 +384,7 @@ class Class(Scope):
+ if _DOTTED_NAME_RE.match(s.strip())]
+ if len(safe_supers) > 0: str += '(%s)' % ','.join(safe_supers)
+ str += ':\n'
+- if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n'
++ if len(self.docstr) > 0: str += self.childindent()+repr(self.docstr)+'\n'
+ if len(self.subscopes) > 0:
+ for s in self.subscopes: str += s.get_code()
+ else:
+@@ -407,7 +407,7 @@ class Function(Scope):
+ safe_params = [p for p in safe_params if p]
+ str = "%sdef %s(%s):\n" % \
+ (self.currentindent(),self.name,','.join(safe_params))
+- if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n'
++ if len(self.docstr) > 0: str += self.childindent()+repr(self.docstr)+'\n'
+ str += "%spass\n" % self.childindent()
+ return str
+
+--
+2.44.4
+
@@ -49,6 +49,7 @@ SRC_URI = "git://github.com/vim/vim.git;branch=master;protocol=https \
file://CVE-2026-59856.patch \
file://CVE-2026-59857.patch \
file://CVE-2026-59858.patch \
+ file://CVE-2026-57456.patch \
"
PV .= ".1683"