Skip to content

Commit

Permalink
Ignore incorrect base 64 padding.
Browse files Browse the repository at this point in the history
  • Loading branch information
keosak committed Feb 13, 2018
1 parent 0d1c629 commit 1000019
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 6 deletions.
10 changes: 7 additions & 3 deletions app/jekylledit/controllers/site.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ def site_file(site_id, file_id):

# Update post
elif request.method == 'PUT':
filename = b64decode(file_id).decode()
filename = decode_filename(file_id)
if not repository.is_path_in(filename):
abort(403)
filemask = filename.rsplit('-', 1)[0] + '-{}.' \
Expand All @@ -164,7 +164,7 @@ def site_file(site_id, file_id):
elif request.method == 'DELETE':
if not Permission(('administrator', site_id)):
abort(403)
filename = b64decode(file_id).decode()
filename = decode_filename(file_id)
if not repository.is_path_in(filename):
abort(403)
filemask = filename.rsplit('-', 1)[0] + '-{}.' \
Expand All @@ -180,7 +180,7 @@ def site_file(site_id, file_id):

# Return post
else:
filename = b64decode(file_id).decode()
filename = decode_filename(file_id)
if not repository.is_path_in(filename):
abort(403)
filemask = filename.rsplit('-', 1)[0] + '-{}.' \
Expand All @@ -199,6 +199,10 @@ def site_file(site_id, file_id):
})


def decode_filename(file_id):
return b64decode(file_id + '===').decode()


# Response related drafts
@app.route('/site/<site_id>/drafts', methods=['GET'])
@cross_origin()
Expand Down
6 changes: 3 additions & 3 deletions app/jekylledit/model/site.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,13 +150,13 @@ def remove_post(self, filename):
def save_media(self, media):
config = self.get_config()
created = []
for key, medio in media.items():
if not '/' in key:
for key, medium in media.items():
if '/' not in key:
filename = self.repository.path(config['media'] + '/' + key)
else:
filename = self.repository.path(key)
with open(filename, 'wb+') as fm:
fm.write(b64decode(medio['data']))
fm.write(b64decode(medium['data']))
created.append(filename)
return created

Expand Down

0 comments on commit 1000019

Please sign in to comment.