diff --git a/json-schema.c b/json-schema.c
index 44ca8c4..b9cc0a8 100644
--- a/json-schema.c
+++ b/json-schema.c
@@ -258,9 +258,11 @@
         }
     }
 
-    //If the boolean field "additionalProperties" exists and is set to false, ensure there are no
-    //extra properties apart from those required in the object.
-    //... todo
+    //Get additional properties value in advance.
+    json_object* additional_properties = json_object_object_get(schema, "additionalProperties");
+    int additional_properties_allowed = 0;
+    if (additional_properties != NULL && json_object_get_type(additional_properties) == json_type_boolean)
+        additional_properties_allowed = json_object_get_boolean(additional_properties);
 
     //Run through the "properties" object and validate each of those in turn.
     json_object* properties = json_object_object_get(schema, "properties");
@@ -277,6 +279,21 @@
             if (!validate_field(key, value, object_prop, error_message))
                 return 0;
         }
+
+        //If additional properties are banned, validate that no additional properties exist.
+        if (!additional_properties_allowed)
+        {
+            json_object_object_foreach(object, key, value) {
+
+                //If the given property name does not exist on the schema object, fail validation.
+                json_object* schema_prop = json_object_object_get(properties, key);
+                if (schema_prop == NULL)
+                {
+                    log_validator_error(error_message, "Invalid additional property '%s' detected on field '%s'.", key, field_name);
+                    return 0;
+                }
+            }
+        }
     }
 
     return 1;
