Bug#802665: augeas-lenses: httpd lens is broken in 1.2

2015-12-11 Thread Yann Soubeyrand
On Tue, 27 Oct 2015 13:37:46 + Dominic Cleal  wrote:
> On 22/10/15 11:52, Erebus wrote:
> > Package: augeas-lenses
> > Version: 1.2.0-0.2
> > Severity: serious
> > Justification: httpd lens is broken in 1.2 
> > 
> > Dear Maintainer,
> > 
> > I have learned that augeas-lenses v1.2 includes a broken httpd lens. In
> > particular, the 1.2 lens throws errors when an httpd config happens to end 
> > with
> > a comment. This is causing trouble for several other projects.
> > 
> > This issue is fixed in upstream version 1.4.
> >
> > See also: https://github.com/letsencrypt/letsencrypt/issues/981
> 
> Attached is a patch against upstream's Augeas 1.2.0 tarball to resolve
> the issue reported on the letsencrypt issue when parsing ssl.conf.

I'm wondering if the severity of that bug could not be reduced. Indeed,
I wasn't successful trying to reproduce the bug mentioned in the above
link concerning ssl.conf.
https://github.com/letsencrypt/letsencrypt/issues/981#issuecomment-148525136 
suggests version 1.2 isn't affected by this bug. However the attached patch 
fixes some other bugs with 1.2 httpd lens which I was able to reproduce.

Dominic, Erebus, before lowering the severity of this bug, could you
confirm or infirm that the bug with the sample ssl.conf isn't present in
Augeas 1.2? And do you confirm that the httpd lens in Augeas 1.2 isn't
broken any more once the attached patch is applied?

Cheers



Bug#802665: augeas-lenses: httpd lens is broken in 1.2

2015-10-27 Thread Dominic Cleal
On 22/10/15 11:52, Erebus wrote:
> Package: augeas-lenses
> Version: 1.2.0-0.2
> Severity: serious
> Justification: httpd lens is broken in 1.2 
> 
> Dear Maintainer,
> 
> I have learned that augeas-lenses v1.2 includes a broken httpd lens. In
> particular, the 1.2 lens throws errors when an httpd config happens to end 
> with
> a comment. This is causing trouble for several other projects.
> 
> This issue is fixed in upstream version 1.4.
>
> See also: https://github.com/letsencrypt/letsencrypt/issues/981

Attached is a patch against upstream's Augeas 1.2.0 tarball to resolve
the issue reported on the letsencrypt issue when parsing ssl.conf.

-- 
Dominic Cleal
Red Hat Engineering
>From 875b63ce9c0eaa72fc1451697b18c60ba50b8165 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Pinson?= 
Date: Tue, 11 Mar 2014 17:41:35 +0100
Subject: [PATCH] Httpd: Allow eol comments after section tags

(cherry picked from commit 3af5c7d44c838b52bbdaf1beb8780fd6a471a77e)

Httpd: Define an eol_comment in section to allow for \n before comment

(cherry picked from commit fb749ea4d1ba4ecd95a5cec6aa7b20b010ef04a8)

Httpd: Do not pass empty as body to section

This causes a conflict with eol_comment over newlines.
`empty` is just a generic part of `section`, not really a body.

(cherry picked from commit 97d3d931fefdfe816e6fb1d6e55a779742f255fa)

Httpd: Make \ illegal in char_arg_dir

Add tests to check non-recursive behaviour
of partial lenses

Fix #223

(cherry picked from commit 3df041be9196a8ca0b7a3e8c90a47b800500cba1)

Httpd: Properly manage eol after opening tag

Allow comments and empty lines after opening tag.

Fix #220

(cherry picked from commit 34980ae52bf4367664ad0551a15c2d1e5a3f2ac4)
---
 lenses/httpd.aug|  9 ---
 lenses/tests/test_httpd.aug | 62 +
 2 files changed, 68 insertions(+), 3 deletions(-)

diff --git a/lenses/httpd.aug b/lenses/httpd.aug
index caea9b6..331d807 100644
--- a/lenses/httpd.aug
+++ b/lenses/httpd.aug
@@ -59,7 +59,7 @@ let empty   = Util.empty_dos
 let indent  = Util.indent
 
 (* borrowed from shellvars.aug *)
-let char_arg_dir  = /[^ '"\t\r\n]|"|'/
+let char_arg_dir  = /[^\\ '"\t\r\n]|"|'/
 let char_arg_sec  = /[^ '"\t\r\n>]|"|'/
 let dquot = /"([^"\\\r\n]|.)*"/
 let squot = /'([^'\\\r\n]|.)*'/
@@ -77,13 +77,16 @@ let directive = [ indent . label "directive" . store word .
   (sep_spc . argv arg_dir)? . eol ]
 
 let section (body:lens) =
+(* opt_eol includes empty lines *)
+let opt_eol = del /([ \t]*#?\r?\n)*/ "\n" in
 let inner = (sep_spc . argv arg_sec)? . sep_osp .
- dels ">" . eol . body* . indent . dels "" . opt_eol . ((body|comment) . (body|empty|comment)*)? .
+ indent . dels "" ">" . eol ]
 
-let rec content = section (content|directive|comment|empty)
+let rec content = section (content|directive)
 
 let lns = (content|directive|comment|empty)*
 
diff --git a/lenses/tests/test_httpd.aug b/lenses/tests/test_httpd.aug
index af6cdc1..bed6cc6 100644
--- a/lenses/tests/test_httpd.aug
+++ b/lenses/tests/test_httpd.aug
@@ -1,5 +1,11 @@
 module Test_httpd =
 
+(* Check that we can iterate on directive *)
+let _ = Httpd.directive+
+
+(* Check that we can do a non iterative section *)
+let _ = Httpd.section Httpd.directive
+
 (* directives testing *)
 let d1 = "ServerRoot \"/etc/apache2\"\n"
 test Httpd.directive get d1 =
@@ -339,3 +345,59 @@ test Httpd.lns get conf2 =
 {  }
   }
 
+(* Eol comment *)
+test Httpd.lns get " # a comment
+MyDirective Foo
+\n" =
+  { "a"
+{ "#comment" = "a comment" }
+{ "directive" = "MyDirective" { "arg" = "Foo" } } }
+
+test Httpd.lns get "
+# a comment
+\n" =
+  { "a" { "#comment" = "a comment" } }
+
+(* GH #220 *)
+let double_comment = "
+##
+## Comment
+##
+\n"
+
+test Httpd.lns get double_comment =
+  { "IfDefine"
+{ "arg" = "Foo" }
+{ "#comment" = "#" }
+{ "#comment" = "# Comment" }
+{ "#comment" = "#" }
+  }
+
+let single_comment = "
+#
+## Comment
+##
+\n"
+
+test Httpd.lns get single_comment =
+  { "IfDefine"
+{ "arg" = "Foo" }
+{ "#comment" = "# Comment" }
+{ "#comment" = "#" }
+  }
+
+let single_empty = "
+#
+
+\n"
+test Httpd.lns get single_empty =
+  { "IfDefine"
+{ "arg" = "Foo" }
+  }
+
+let eol_empty = " #
+\n"
+test Httpd.lns get eol_empty =
+  { "IfDefine"
+{ "arg" = "Foo" }
+  }
-- 
2.4.3



Bug#802665: augeas-lenses: httpd lens is broken in 1.2

2015-10-22 Thread Erebus
Package: augeas-lenses
Version: 1.2.0-0.2
Severity: serious
Justification: httpd lens is broken in 1.2 

Dear Maintainer,

I have learned that augeas-lenses v1.2 includes a broken httpd lens. In
particular, the 1.2 lens throws errors when an httpd config happens to end with
a comment. This is causing trouble for several other projects.

This issue is fixed in upstream version 1.4.

See also: https://github.com/letsencrypt/letsencrypt/issues/981

With kind regards
erebus