[augeas-devel] [PATCH] Fix segfault when branch in a union does not have a ktype
David Lutterkort
lutter at redhat.com
Wed Jan 14 00:26:30 UTC 2009
* src/lens.c (lns_key_regexp): check for NULL ktype of branch
* tests/modules/pass_union_nokey.aug: test the fix
Bug reported by Robin Lee Powell <rlpowell at digitalkingdom.org>
---
src/lens.c | 16 +++++++++-------
tests/modules/pass_union_nokey.aug | 4 ++++
2 files changed, 13 insertions(+), 7 deletions(-)
create mode 100644 tests/modules/pass_union_nokey.aug
diff --git a/src/lens.c b/src/lens.c
index 0439e9a..faf29ee 100644
--- a/src/lens.c
+++ b/src/lens.c
@@ -582,13 +582,15 @@ static struct regexp *lns_key_regexp(struct lens *l, struct value **exn) {
struct regexp *r = lns_key_regexp(l->children[i], exn);
if (*exn != NULL)
return NULL;
- if (k == NULL) {
- k = r;
- } else {
- struct regexp *u = regexp_union(l->info, k, r);
- unref(k, regexp);
- unref(r, regexp);
- k = u;
+ if (r != NULL) {
+ if (k == NULL) {
+ k = r;
+ } else {
+ struct regexp *u = regexp_union(l->info, k, r);
+ unref(k, regexp);
+ unref(r, regexp);
+ k = u;
+ }
}
}
return k;
diff --git a/tests/modules/pass_union_nokey.aug b/tests/modules/pass_union_nokey.aug
new file mode 100644
index 0000000..084cf8c
--- /dev/null
+++ b/tests/modules/pass_union_nokey.aug
@@ -0,0 +1,4 @@
+module Pass_union_nokey =
+
+let lns = [ key /[a-z]+/ . store /[0-9]+/
+ | [ key /[a-z]+/ ] . del /[ ]+/ " " ]
--
1.6.0.4
More information about the augeas-devel
mailing list