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 <[email protected]>
Gerrit-Reviewer: Aude <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: Hoo man <[email protected]>
Gerrit-Reviewer: Jeroen De Dauw <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits