Skip to content

Commit 81b56c5

Browse files
authored
Merge pull request from GHSA-8g38-3m6v-232j
use repr for logging user input
2 parents fcd7bec + 037e27e commit 81b56c5

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

ckan/common.py

+9
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,15 @@ def aslist(obj: Any, sep: Optional[str] = None, strip: bool = True) -> Any:
306306
return [obj]
307307

308308

309+
def repr_untrusted(danger: Any):
310+
"""
311+
repr-format danger and truncate e.g. for logging untrusted input
312+
"""
313+
r = repr(danger)
314+
rtrunc = r[:200]
315+
return rtrunc + '…' if r != rtrunc else r
316+
317+
309318
local = Local()
310319

311320
# This a proxy to the bounded config object

ckan/views/user.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
import ckan.plugins as plugins
2626
from ckan import authz
2727
from ckan.common import (
28-
_, config, g, request, current_user, login_user, logout_user, session
28+
_, config, g, request, current_user, login_user, logout_user, session,
29+
repr_untrusted
2930
)
3031
from ckan.types import Context, Schema, Response
3132
from ckan.lib import signals
@@ -675,7 +676,7 @@ def post(self) -> Response:
675676
if id in (None, u''):
676677
h.flash_error(_(u'Email is required'))
677678
return h.redirect_to(u'user.request_reset')
678-
log.info(u'Password reset requested for user "{}"'.format(id))
679+
log.info('Password reset requested for user %s', repr_untrusted(id))
679680

680681
context: Context = {
681682
'user': current_user.name,
@@ -716,8 +717,8 @@ def post(self) -> Response:
716717
pass
717718

718719
if not user_objs:
719-
log.info(u'User requested reset link for unknown user: {}'
720-
.format(id))
720+
log.info('User requested reset link for unknown user: %s',
721+
repr_untrusted(id))
721722

722723
for user_obj in user_objs:
723724
log.info(u'Emailing reset link to user: {}'

0 commit comments

Comments
 (0)