Do not crash with NULL values from aug_get
authorPino Toscano <ptoscano@redhat.com>
Fri, 15 Sep 2017 14:42:05 +0000 (16:42 +0200)
committerRichard W.M. Jones <rjones@redhat.com>
Fri, 15 Sep 2017 15:45:28 +0000 (16:45 +0100)
The Augeas documentation states that NULL can be a valid value
associated to a note.  Hence, make sure to not crash, and return None
in case there is a single node with NULL value.

Easily reproducible with:
  let v = Augeas.get aug "/files" in

augeas-c.c

index f4396cb..b81c2b1 100644 (file)
@@ -206,11 +206,11 @@ ocaml_augeas_get (value tv, value pathv)
   int r;
 
   r = aug_get (t, path, &val);
-  if (r == 1) {                        /* Return Some val */
+  if (r == 1 && val) {         /* Return Some val */
     v = caml_copy_string (val);
     optv = caml_alloc (1, 0);
     Field (optv, 0) = v;
-  } else if (r == 0)           /* Return None */
+  } else if (r == 0 || !val)   /* Return None */
     optv = Val_int (0);
   else if (r == -1)            /* Error or multiple matches */
     raise_error (t, "Augeas.get");