Merge pull request #2719 from matrix-org/rav/handle_missing_hashes
Fix 500 when joining matrix-devpull/2727/head
						commit
						8b45de90a4
					
				|  | @ -32,15 +32,22 @@ def check_event_content_hash(event, hash_algorithm=hashlib.sha256): | |||
|     """Check whether the hash for this PDU matches the contents""" | ||||
|     name, expected_hash = compute_content_hash(event, hash_algorithm) | ||||
|     logger.debug("Expecting hash: %s", encode_base64(expected_hash)) | ||||
|     if name not in event.hashes: | ||||
| 
 | ||||
|     # some malformed events lack a 'hashes'. Protect against it being missing | ||||
|     # or a weird type by basically treating it the same as an unhashed event. | ||||
|     hashes = event.get("hashes") | ||||
|     if not isinstance(hashes, dict): | ||||
|         raise SynapseError(400, "Malformed 'hashes'", Codes.UNAUTHORIZED) | ||||
| 
 | ||||
|     if name not in hashes: | ||||
|         raise SynapseError( | ||||
|             400, | ||||
|             "Algorithm %s not in hashes %s" % ( | ||||
|                 name, list(event.hashes), | ||||
|                 name, list(hashes), | ||||
|             ), | ||||
|             Codes.UNAUTHORIZED, | ||||
|         ) | ||||
|     message_hash_base64 = event.hashes[name] | ||||
|     message_hash_base64 = hashes[name] | ||||
|     try: | ||||
|         message_hash_bytes = decode_base64(message_hash_base64) | ||||
|     except Exception: | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Richard van der Hoff
						Richard van der Hoff