Skip to content

Commit

Permalink
Fixes #886 - crash on deviation of config
Browse files Browse the repository at this point in the history
  • Loading branch information
mbj4668 committed Mar 12, 2024
1 parent 3e2ca00 commit 25f69e8
Show file tree
Hide file tree
Showing 4 changed files with 96 additions and 2 deletions.
8 changes: 6 additions & 2 deletions pyang/statements.py
Original file line number Diff line number Diff line change
Expand Up @@ -2055,8 +2055,12 @@ def v_key():
'KEY_HAS_MANDATORY_FALSE', ())

if ptr.i_config != stmt.i_config:
err_add(ctx.errors, ptr.search_one('config').pos,
'KEY_BAD_CONFIG', name)
cfg = ptr.search_one('config')
if cfg is not None:
pos = cfg.pos
else:
pos = ptr.pos
err_add(ctx.errors, pos, 'KEY_BAD_CONFIG', name)

stmt.i_key.append(ptr)
ptr.i_is_key = True
Expand Down
4 changes: 4 additions & 0 deletions test/test_issues/test_i886/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
test:
$(PYANG) --print-error-code \
--deviation-module deviation-problem-dev.yang \
deviation-problem.yang 2>&1 | grep KEY_BAD_CONFIG > /dev/null
35 changes: 35 additions & 0 deletions test/test_issues/test_i886/deviation-problem-dev.yang
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
module deviation-problem-dev {

yang-version 1.1;
namespace "urn:deviation-problem-dev:1.0";
prefix "dp-dev";

import deviation-problem {
prefix "dp";
}

organization "x";
contact "x";
description "x";
revision "2023-12-12" {
description
"version 1.0.0
1) initial version";
reference
"x";
}

/* Deviations to permit configuration of RO parameters */
deviation "/dp:top/dp:cnode" {
deviate replace {
config true;
}
}

/* Deviations to permit configuration of RO parameters */
deviation "/dp:top/dp:lnode" {
deviate replace {
config true;
}
}
}
51 changes: 51 additions & 0 deletions test/test_issues/test_i886/deviation-problem.yang
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
module deviation-problem {

yang-version 1.1;
namespace "urn:deviation-problem:1.0";
prefix "deviation-problem";

organization "x";
contact "x";
description "x";
revision "2023-12-12" {
description
"version 1.0.0
1) initial version";
reference
"x";
}

container top {
description "top container";

leaf tleaf {
type uint32;
units nanoseconds;
description "eleaf";
}

container cnode {
config false;
description "container node";
leaf cleaf {
type uint32;
units nanoseconds;
description "eleaf";
}
}

list lnode {
key "id";
config false;
description
"List node";

leaf id {
type uint16;
description
"list key";
}
}
}

}

0 comments on commit 25f69e8

Please sign in to comment.