[augeas-devel] [PATCH] Fix parsing of fstab entries containing fscontext SELinux option

Matthew Booth mbooth at redhat.com
Thu Mar 10 15:43:17 UTC 2011


Systems using SELinux can contain an fstab option like:
fscontext=system_u:object_r:removable_t

The fstab lens is currently too strict, and doesn't allow colons in the value.
This patch relaxes the parsing to make it as lax as possible within the
constraints of the syntax.
---
 lenses/fstab.aug            |    7 ++++---
 lenses/tests/test_fstab.aug |    4 +++-
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/lenses/fstab.aug b/lenses/fstab.aug
index ea8cbca..b6c2d9f 100644
--- a/lenses/fstab.aug
+++ b/lenses/fstab.aug
@@ -11,12 +11,13 @@ module Fstab =
   let comment = Util.comment
   let empty   = Util.empty
 
-  let word    = Rx.word
+  (* An option label can't contain comma, comment, equals, or space *)
+  let optlabel = /[^,#= \n\t]+/
   let spec    = /[^,# \n\t][^ \n\t]*/
 
   let comma_sep_list (l:string) =
-    let value = [ label "value" . Util.del_str "=" . store word ] in
-      let lns = [ label l . store word . value? ] in
+    let value = [ label "value" . Util.del_str "=" . store Rx.neg1 ] in
+      let lns = [ label l . store optlabel . value? ] in
          Build.opt_list lns comma
 
   let record = [ seq "mntent" .
diff --git a/lenses/tests/test_fstab.aug b/lenses/tests/test_fstab.aug
index ac6b4ef..80db2c1 100644
--- a/lenses/tests/test_fstab.aug
+++ b/lenses/tests/test_fstab.aug
@@ -35,7 +35,7 @@ module Test_fstab =
         { "opt" = "defaults" } }
 
 
-  let multi_opts = "devpts\t /dev/pts\t devpts  gid=5,mode=620  0 0\n"
+  let multi_opts = "devpts\t /dev/pts\t devpts  gid=5,mode=620,fscontext=system_u:object_r:removable_t  0 0\n"
 
   let multi_opts_tree =
     { "1"
@@ -46,6 +46,8 @@ module Test_fstab =
             { "value" = "5" } }
         { "opt" = "mode"
             { "value" = "620" } }
+        { "opt" = "fscontext"
+            { "value" = "system_u:object_r:removable_t" } }
         { "dump" = "0" }
         { "passno" = "0" } }
 
-- 
1.7.4




More information about the augeas-devel mailing list