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