Daniel Kinzler has submitted this change and it was merged.

Change subject: Basic validation for snaks JSON in SetReference
......................................................................


Basic validation for snaks JSON in SetReference

Also remove broken example URLs (per DanielK).

Bug: 47553
Change-Id: If9b95653a04b35b2e85e9415870d708d5bf2603d
---
M repo/includes/api/SetReference.php
1 file changed, 7 insertions(+), 16 deletions(-)

Approvals:
  Daniel Kinzler: Verified; Looks good to me, approved
  jenkins-bot: Checked



diff --git a/repo/includes/api/SetReference.php 
b/repo/includes/api/SetReference.php
index d555a40..3bfb47b 100644
--- a/repo/includes/api/SetReference.php
+++ b/repo/includes/api/SetReference.php
@@ -108,12 +108,19 @@
        protected function getSnaks( $rawSnaks ) {
                $rawSnaks = \FormatJson::decode( $rawSnaks, true );
 
+               if ( !is_array( $rawSnaks ) || !count( $rawSnaks ) ) {
+                       $this->dieUsage( 'No snaks or invalid JSON given', 
'setreference-no-snaks' );
+               }
+
                $snaks = new SnakList();
 
                $serializerFactory = new 
\Wikibase\Lib\Serializers\SerializerFactory();
                $snakUnserializer = 
$serializerFactory->newUnserializerForClass( 'Wikibase\Snak' );
 
                foreach ( $rawSnaks as $byPropertySnaks ) {
+                       if ( !is_array( $byPropertySnaks ) ) {
+                               $this->dieUsage( 'Invalid snak JSON given', 
'setreference-invalid-snaks' );
+                       }
                        foreach ( $byPropertySnaks as $rawSnak ) {
                                $snaks[] = 
$snakUnserializer->newFromSerialization( $rawSnak );
                        }
@@ -269,22 +276,6 @@
        public function getDescription() {
                return array(
                        'API module for creating a reference or setting the 
value of an existing one.'
-               );
-       }
-
-       /**
-        * @see \ApiBase::getExamples
-        *
-        * @since 0.3
-        *
-        * @return array
-        */
-       protected function getExamples() {
-               return array(
-                       
'api.php?statement=q586$57CE3C9F-37AF-42B5-B067-DADA198DD579&snaks={"p1":[{snak},
 {snak}], "p2": [{snak}]}&token=foo&baserevid=42' =>
-                               'Creating a new reference with 3 snaks',
-                       
'api.php?statement=q586$57CE3C9F-37AF-42B5-B067-DADA198DD579&snaks={"p2": 
[{snak}]}&reference=da39a3ee5e6b4b0d3255bfef95601890afd80709&token=foo&baserevid=42'
 =>
-                               'Updating an existing reference to contain a 
single snak',
                );
        }
 

-- 
To view, visit https://gerrit.wikimedia.org/r/60410
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If9b95653a04b35b2e85e9415870d708d5bf2603d
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: Hoo man <h...@online.de>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: Hoo man <h...@online.de>
Gerrit-Reviewer: Jeroen De Dauw <jeroended...@gmail.com>
Gerrit-Reviewer: jenkins-bot

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to