Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 48123b2

Browse files
committed
Security fixes: reject non-wiki-word page names; set homedir to /tmp.
Show errors returned by store(). A few nits.
1 parent f606e8d commit 48123b2

1 file changed

Lines changed: 13 additions & 6 deletions

File tree

Demo/cgi/cgi3.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,21 @@ def main():
1111
form = cgi.FieldStorage()
1212
print "Content-type: text/html"
1313
print
14-
cmd = form.getvalue("cmd") or "view"
15-
page = form.getvalue("page") or "FrontPage"
14+
cmd = form.getvalue("cmd", "view")
15+
page = form.getvalue("page", "FrontPage")
1616
wiki = WikiPage(page)
1717
wiki.load()
1818
method = getattr(wiki, 'cmd_' + cmd, None) or wiki.cmd_view
1919
method(form)
2020

2121
class WikiPage:
2222

23-
homedir = os.path.dirname(sys.argv[0])
23+
homedir = "/tmp"
2424
scripturl = os.path.basename(sys.argv[0])
2525

2626
def __init__(self, name):
27+
if not self.iswikiword(name):
28+
raise ValueError, "page name is not a wiki word"
2729
self.name = name
2830
self.load()
2931

@@ -48,7 +50,7 @@ def cmd_view(self, form):
4850
words[i] = word
4951
print "".join(words)
5052
print "<hr>"
51-
print "<p>", self.mklink("edit", self.name, "Edit this page") + ","
53+
print "<p>", self.mklink("edit", self.name, "Edit this page") + ";"
5254
print self.mklink("view", "FrontPage", "go to front page") + "."
5355

5456
def cmd_edit(self, form, label="Change"):
@@ -64,8 +66,13 @@ def cmd_edit(self, form, label="Change"):
6466

6567
def cmd_create(self, form):
6668
self.data = form.getvalue("text", "").strip()
67-
self.store()
68-
self.cmd_view(form)
69+
error = self.store()
70+
if error:
71+
print "<h1>I'm sorry. That didn't work</h1>"
72+
print "<p>An error occurred while attempting to write the file:"
73+
print "<p>", escape(error)
74+
else:
75+
self.cmd_view(form)
6976

7077
def cmd_new(self, form):
7178
self.cmd_edit(form, label="Create Page")

0 commit comments

Comments
 (0)