diff --git a/library/HTMLPurifier.includes.php b/library/HTMLPurifier.includes.php
index 97fcf27d..f4956fa4 100644
--- a/library/HTMLPurifier.includes.php
+++ b/library/HTMLPurifier.includes.php
@@ -138,6 +138,7 @@ require 'HTMLPurifier/ConfigSchema/Validator/Composite.php';
require 'HTMLPurifier/ConfigSchema/Validator/Exists.php';
require 'HTMLPurifier/ConfigSchema/Validator/NamespaceExists.php';
require 'HTMLPurifier/ConfigSchema/Validator/Or.php';
+require 'HTMLPurifier/ConfigSchema/Validator/ParseDefault.php';
require 'HTMLPurifier/ConfigSchema/Validator/ParseId.php';
require 'HTMLPurifier/ConfigSchema/Validator/ParseType.php';
require 'HTMLPurifier/ConfigSchema/Validator/Unique.php';
diff --git a/library/HTMLPurifier/ConfigSchema/Interchange.php b/library/HTMLPurifier/ConfigSchema/Interchange.php
index 76fa828f..31e28775 100644
--- a/library/HTMLPurifier/ConfigSchema/Interchange.php
+++ b/library/HTMLPurifier/ConfigSchema/Interchange.php
@@ -66,6 +66,7 @@ class HTMLPurifier_ConfigSchema_Interchange
$directive->addValidator($this->make('Exists', '_TYPE'));
$directive->addValidator($this->make('Exists', '_NULL'));
$directive->addValidator($this->make('Exists', 'DEFAULT'));
+ $directive->addValidator($this->make('ParseDefault'));
// Common tests
$validator->addValidator($this->make('Exists', 'DESCRIPTION'));
diff --git a/library/HTMLPurifier/ConfigSchema/Validator/ParseDefault.php b/library/HTMLPurifier/ConfigSchema/Validator/ParseDefault.php
new file mode 100644
index 00000000..3f21e691
--- /dev/null
+++ b/library/HTMLPurifier/ConfigSchema/Validator/ParseDefault.php
@@ -0,0 +1,18 @@
+parse($arr['DEFAULT'], $arr['_TYPE'], $arr['_NULL']);
+ } catch (HTMLPurifier_VarParserException $e) {
+ throw new HTMLPurifier_ConfigSchema_Exception('Invalid type for default value in '. $arr['ID'] .': ' . $e->getMessage());
+ }
+ }
+
+}
diff --git a/tests/HTMLPurifier/ConfigSchema/Validator/ParseDefaultTest.php b/tests/HTMLPurifier/ConfigSchema/Validator/ParseDefaultTest.php
new file mode 100644
index 00000000..87b0b290
--- /dev/null
+++ b/tests/HTMLPurifier/ConfigSchema/Validator/ParseDefaultTest.php
@@ -0,0 +1,34 @@
+ 'N.D',
+ 'DEFAULT' => 'true',
+ '_TYPE' => 'bool',
+ '_NULL' => false,
+ );
+ $this->validator->validate($arr, $this->interchange);
+ $this->assertIdentical($arr, array(
+ 'ID' => 'N.D',
+ 'DEFAULT' => 'true',
+ '_TYPE' => 'bool',
+ '_NULL' => false,
+ '_DEFAULT' => true,
+ ));
+ }
+
+ public function testValidateFail() {
+ $arr = array(
+ 'ID' => 'N.D',
+ 'DEFAULT' => '"asdf"',
+ '_TYPE' => 'int',
+ '_NULL' => true,
+ );
+ $this->expectSchemaException('Invalid type for default value in N.D: Expected type int, got string');
+ $this->validator->validate($arr, $this->interchange);
+ }
+
+}