diff --git a/core/block_processor.go b/core/block_processor.go
index 83399f47283924cd26cfd380401b1e49ea861647..127e9792118795f21c45a73c792e6dbd3c1b131e 100644
--- a/core/block_processor.go
+++ b/core/block_processor.go
@@ -258,6 +258,10 @@ func (sm *BlockProcessor) CalculateTD(block *types.Block) (*big.Int, bool) {
 // an uncle or anything that isn't on the current block chain.
 // Validation validates easy over difficult (dagger takes longer time = difficult)
 func (sm *BlockProcessor) ValidateBlock(block, parent *types.Block) error {
+	if len(block.Header().Extra) > 1024 {
+		return fmt.Errorf("Block extra data too long (%d)", len(block.Header().Extra))
+	}
+
 	expd := CalcDifficulty(block, parent)
 	if expd.Cmp(block.Header().Difficulty) < 0 {
 		return fmt.Errorf("Difficulty check failed for block %v, %v", block.Header().Difficulty, expd)