Check that attributedTo is a string

main
Bob Mottram 2020-08-06 17:21:46 +01:00
parent e28327ad97
commit 34798bfd15
4 changed files with 39 additions and 27 deletions

View File

@ -170,6 +170,8 @@ def htmlBlogPostContent(authorized: bool,
# get the handle of the author # get the handle of the author
if postJsonObject['object'].get('attributedTo'): if postJsonObject['object'].get('attributedTo'):
authorNickname = None
if isinstance(postJsonObject['object']['attributedTo'], str):
actor = postJsonObject['object']['attributedTo'] actor = postJsonObject['object']['attributedTo']
authorNickname = getNicknameFromActor(actor) authorNickname = getNicknameFromActor(actor)
if authorNickname: if authorNickname:

2
git.py
View File

@ -126,6 +126,8 @@ def convertPostToPatch(baseDir: str, nickname: str, domain: str,
return False return False
if not postJsonObject['object'].get('attributedTo'): if not postJsonObject['object'].get('attributedTo'):
return False return False
if not isinstance(postJsonObject['object']['attributedTo'], str):
return False
if not isGitPatch(baseDir, nickname, domain, if not isGitPatch(baseDir, nickname, domain,
postJsonObject['object']['type'], postJsonObject['object']['type'],
postJsonObject['object']['summary'], postJsonObject['object']['summary'],

View File

@ -1422,12 +1422,15 @@ def receiveAnnounce(recentPostsCache: {},
# so that their avatar can be shown # so that their avatar can be shown
lookupActor = None lookupActor = None
if postJsonObject.get('attributedTo'): if postJsonObject.get('attributedTo'):
if isinstance(postJsonObject['attributedTo'], str):
lookupActor = postJsonObject['attributedTo'] lookupActor = postJsonObject['attributedTo']
else: else:
if postJsonObject.get('object'): if postJsonObject.get('object'):
if isinstance(postJsonObject['object'], dict): if isinstance(postJsonObject['object'], dict):
if postJsonObject['object'].get('attributedTo'): if postJsonObject['object'].get('attributedTo'):
lookupActor = postJsonObject['object']['attributedTo'] attrib = postJsonObject['object']['attributedTo']
if isinstance(attrib, str):
lookupActor = attrib
if lookupActor: if lookupActor:
if '/users/' in lookupActor or \ if '/users/' in lookupActor or \
'/channel/' in lookupActor or \ '/channel/' in lookupActor or \
@ -2190,6 +2193,7 @@ def inboxAfterCapabilities(recentPostsCache: {}, maxRecentPosts: int,
postJsonObject['object'].get('summary') and \ postJsonObject['object'].get('summary') and \
postJsonObject['object'].get('attributedTo'): postJsonObject['object'].get('attributedTo'):
attributedTo = postJsonObject['object']['attributedTo'] attributedTo = postJsonObject['object']['attributedTo']
if isinstance(attributedTo, str):
fromNickname = getNicknameFromActor(attributedTo) fromNickname = getNicknameFromActor(attributedTo)
fromDomain, fromPort = getDomainFromActor(attributedTo) fromDomain, fromPort = getDomainFromActor(attributedTo)
if fromPort: if fromPort:

View File

@ -3813,6 +3813,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
if showIcons: if showIcons:
replyToLink = postJsonObject['object']['id'] replyToLink = postJsonObject['object']['id']
if postJsonObject['object'].get('attributedTo'): if postJsonObject['object'].get('attributedTo'):
if isinstance(postJsonObject['object']['attributedTo'], str):
replyToLink += \ replyToLink += \
'?mention=' + postJsonObject['object']['attributedTo'] '?mention=' + postJsonObject['object']['attributedTo']
if postJsonObject['object'].get('content'): if postJsonObject['object'].get('content'):
@ -3985,6 +3986,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
if showRepeatIcon: if showRepeatIcon:
if isAnnounced: if isAnnounced:
if postJsonObject['object'].get('attributedTo'): if postJsonObject['object'].get('attributedTo'):
attributedTo = ''
if isinstance(postJsonObject['object']['attributedTo'], str):
attributedTo = postJsonObject['object']['attributedTo'] attributedTo = postJsonObject['object']['attributedTo']
if attributedTo.startswith(postActor): if attributedTo.startswith(postActor):
titleStr += \ titleStr += \
@ -3994,8 +3997,9 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
'" src="/' + iconsDir + \ '" src="/' + iconsDir + \
'/repeat_inactive.png" class="announceOrReply"/>\n' '/repeat_inactive.png" class="announceOrReply"/>\n'
else: else:
announceNickname = \ announceNickname = None
getNicknameFromActor(attributedTo) if attributedTo:
announceNickname = getNicknameFromActor(attributedTo)
if announceNickname: if announceNickname:
announceDomain, announcePort = \ announceDomain, announcePort = \
getDomainFromActor(attributedTo) getDomainFromActor(attributedTo)