From 79c91b337876d0d1a722df6c305ff2236405859c Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 5 Jun 2017 18:50:10 +0200 Subject: [PATCH] Do not tolerate invalid status arguments Status must be one of current, deprecated, obsolete. Make sure we do not leak nulls when the model supplies an illegal string, but rather flag the offender. Change-Id: I3301eaf2f753fe74a24dfa30d8e74cbf3a571493 Signed-off-by: Robert Varga (cherry picked from commit d25e1c05a0af0930ad1fa469d2edbd30b24a43dc) --- .../parser/stmt/rfc6020/StatusStatementImpl.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java index 336abefbf1..28f13c5221 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/StatusStatementImpl.java @@ -16,6 +16,7 @@ import org.opendaylight.yangtools.yang.parser.spi.SubstatementValidator; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; +import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.StatusEffectiveStatementImpl; public class StatusStatementImpl extends AbstractDeclaredStatement @@ -39,7 +40,17 @@ public class StatusStatementImpl extends AbstractDeclaredStatement @Override public Status parseArgumentValue(final StmtContext ctx, final String value) { - return Utils.parseStatus(value); + switch (value) { + case "current": + return Status.CURRENT; + case "deprecated": + return Status.DEPRECATED; + case "obsolete": + return Status.OBSOLETE; + default: + throw new SourceException(ctx.getStatementSourceReference(), + "Invalid status '%s', must be one of 'current', 'deprecated' or 'obsolete'", value); + } } @Override -- 2.36.6