MDL-51700 ajax: Clean the external function return values
authorFrederic Massart <fred@moodle.com>
Thu, 8 Oct 2015 09:51:05 +0000 (17:51 +0800)
committerFrederic Massart <fred@moodle.com>
Wed, 2 Dec 2015 02:30:01 +0000 (10:30 +0800)
lib/ajax/service.php
lib/upgrade.txt

index ce58f01..e72f165 100644 (file)
@@ -82,6 +82,12 @@ foreach ($requests as $request) {
         $result = call_user_func_array($callable,
                                        array_values($params));
 
+        // Validate the return parameters.
+        if ($externalfunctioninfo->returns_desc !== null) {
+            $callable = array($externalfunctioninfo->classname, 'clean_returnvalue');
+            $result = call_user_func($callable, $externalfunctioninfo->returns_desc, $result);
+        }
+
         $response['error'] = false;
         $response['data'] = $result;
         $responses[$index] = $response;
index c38064a..aa16374 100644 (file)
@@ -1,6 +1,10 @@
 This files describes API changes in core libraries and APIs,
 information provided here is intended especially for developers.
 
+=== 3.1 ===
+
+* Ajax calls going through lib/ajax/* now validate the return values before sending the response. If the validation does not pass an exception is raised. This behaviour is consistent with web services.
+
 === 3.0 ===
 
 * Minify updated to 2.2.1