On 3 November 2017 at 15:47, Sam Ruby <ru...@intertwingly.net> wrote: > On Fri, Nov 3, 2017 at 11:37 AM, Craig Russell <apache....@gmail.com> wrote: >> I cannot reproduce this error on my local machine running Chrome or Safari. >> >> With the production code, the problem shows up if the Full name has the >> non-ascii character. >> >> So I can't test to see if substituting \r\n for \n helps. :( > > Problem occurs with the latest mail gem. See what "gem list mail" > returns. If it doesn't return 2.7.0 in the list, try running 'bundle > update' and then "gem list mail" again. > >> Craig >> >>> On Nov 3, 2017, at 7:50 AM, Craig Russell <apache....@gmail.com> wrote: >>> >>>> >>>> On Nov 2, 2017, at 10:35 PM, Sam Ruby <ru...@intertwingly.net> wrote: >>>> >>>> On Thu, Nov 2, 2017 at 11:34 PM, Craig Russell <apache....@gmail.com> >>>> wrote: >>>>> >>>>>> On Nov 2, 2017, at 4:24 PM, Sam Ruby <ru...@intertwingly.net> wrote: >>>>>> >>>>>> On Thu, Nov 2, 2017 at 6:58 PM, Craig Russell <apache....@gmail.com> >>>>>> wrote: >>>>>>> The error appears to be here: >>>>>>> >>>>>>> # untaint to email addresses >>>>>>> mail.to = mail.to.map {|email| email.dup.untaint} <== here >>>>>>> >>>>>>> But the mail.to should be r...@apache.org >>>>>> >>>>>> mail.to is normally an array of values. In this case, it is a string >>>>>> containing the bulk of the headers and body of the message. >>>>> >>>>> Why does email to: contain all that stuff? >>>> >>>> Properly formatted emails terminate lines in \r\n. The template ends >>>> lines with \n. >>> >>> The template code: >>> >>> def template(name) >>> path = File.expand_path("../templates/#{name}", __FILE__.untaint) >>> ERB.new(File.read(path.untaint).untaint).result(binding) >>> end >>> >>> Could this be changed to replace all \n with \r\n here? > > my concern is that template is used in other places.
So why not change the template itself to use CRLF? > I've created a pull request for the mail gem: > > https://github.com/mikel/mail/pull/1168 > > And monkey-patched the mail gem within the workbench tool: > > https://github.com/apache/whimsy/commit/465cc35232ed1c9a9d8f98d1150d25081b844884 > >>> Craig > > - Sam Ruby > >>>> Properly formatted emails also are pure ASCII; emails have a strange >>>> convention for escaping non-ASCII characters. >>>> >>>> Previous versions of the mail gem recovered from both cases. Recent >>>> changes made it so that it will recover from one or the other, but not >>>> both simultaneously. I plan to build a pull request for the mail gem >>>> tomorrow to address this. >>>> >>>>> Given that the email to: was created in line 221, I don't understand why >>>>> it needs to be untainted. >>>>>> >>>>>>> Why does this need to be untainted? Why does it fail just on this >>>>>>> email? The only thing different about this email is the non-ascii >>>>>>> characters in the name... >>>>>> >>>>>> Bug reported against mail gem: >>>>>> https://github.com/mikel/mail/issues/1167. The existence of non-ASCII >>>>>> characters and the absence of CR's appear to be involved. I want to >>>>>> think briefly about whether it would be better to pin to an older >>>>>> version of this gem (which would work, but would mean that we wouldn't >>>>>> get bug fixes), or to find a reasonable workaround. >>>>> >>>>> What bad would happen if line 232 were removed? Could the >>>>> template('acreq.erb') be untainted by itself? mail cc: is untainted in >>>>> line 229. >>>> >>>> https://lists.apache.org/thread.html/cf99af41102e58ffe3e3e98afa1d9861590c232373f92f079341fe3f@%3Cdev.whimsical.apache.org%3E >>>> >>>> There may indeed be other ways to untaint this value, perhaps >>>> untainting the whole template might indeed work; but first we need >>>> either have the template produce a more RFC compliant email or to make >>>> the mail gem handle what the template does produce. As it stands now, >>>> the mail gem will take the entire rest of the file and store it into >>>> the to: address, which will fail later even if this were untainted. >>>> >>>>> Craig >>>>> >>>>>> >>>>>>> Craig >>>>>> >>>>>> - Sam Ruby >>>> >>>> - Sam Ruby >>>> >>>>>>>> On Nov 2, 2017, at 3:31 PM, Craig Russell <apache....@gmail.com> wrote: >>>>>>>> >>>>>>>> Hi Sam, >>>>>>>> >>>>>>>>> On Nov 2, 2017, at 12:08 PM, Sam Ruby <ru...@intertwingly.net> wrote: >>>>>>>>> >>>>>>>>> Reproduction instructions? >>>>>>>> >>>>>>>> Try to file the icla from Nandor Kollar. >>>>>>>> >>>>>>>> Thanks! >>>>>>>> >>>>>>>> Craig >>>>>>>>> >>>>>>>>> - Sam Ruby >>>>>>>>> >>>>>>>>> On Thu, Nov 2, 2017 at 11:27 AM, Craig Russell <apache....@gmail.com> >>>>>>>>> wrote: >>>>>>>>>> #<NoMethodError: undefined method `map' for >>>>>>>>>> #<String:0x007f9ba34add28> Did you mean? tap> >>>>>>>>>> /x1/srv/whimsy/www/secretary/workbench/views/actions/icla.json.rb:232:in >>>>>>>>>> `block in _evaluate' >>>>>>>>>> /x1/srv/whimsy/www/secretary/workbench/tasks.rb:9:in `task' >>>>>>>>>> /x1/srv/whimsy/www/secretary/workbench/views/actions/icla.json.rb:221:in >>>>>>>>>> `_evaluate' >>>>>>>>>> /x1/srv/whimsy/www/secretary/workbench/server.rb:68:in `block in >>>>>>>>>> <top (required)>' >>>>>>>>>> /x1/srv/whimsy/lib/whimsy/asf/rack.rb:223:in `call' >>>>>>>>>> /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.1.8/src/ruby_supportlib/phusion_passenger/rack/out_of_band_gc.rb:48:in >>>>>>>>>> `call' >>>>>>>>>> /x1/srv/whimsy/lib/whimsy/asf/rack.rb:148:in `call' >>>>>>>>>> /x1/srv/whimsy/lib/whimsy/asf/rack.rb:79:in `call' >>>>>>>>>> /x1/srv/whimsy/lib/whimsy/asf/rack.rb:254:in `call' >>>>>>>>>> /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.1.8/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb:97:in >>>>>>>>>> `process_request' >>>>>>>>>> /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.1.8/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:160:in >>>>>>>>>> `accept_and_process_next_request' >>>>>>>>>> /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.1.8/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:113:in >>>>>>>>>> `main_loop' >>>>>>>>>> /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.1.8/src/ruby_supportlib/phusion_passenger/request_handler.rb:416:in >>>>>>>>>> `block (3 levels) in start_threads' >>>>>>>>>> /usr/local/rvm/gems/ruby-2.4.1/gems/passenger-5.1.8/src/ruby_supportlib/phusion_passenger/utils.rb:113:in >>>>>>>>>> `block in create_thread_and_abort_on_exception' >>>>>>>>>> >>>>>>>>>> Craig L Russell >>>>>>>>>> Secretary, Apache Software Foundation >>>>>>>>>> c...@apache.org http://db.apache.org/jdo >>>>>>>>>> >>>>>>>> >>>>>>>> Craig L Russell >>>>>>>> Secretary, Apache Software Foundation >>>>>>>> c...@apache.org http://db.apache.org/jdo >>>>>>> >>>>>>> Craig L Russell >>>>>>> Secretary, Apache Software Foundation >>>>>>> c...@apache.org http://db.apache.org/jdo >>>>>>> >>>>> >>>>> Craig L Russell >>>>> Secretary, Apache Software Foundation >>>>> c...@apache.org http://db.apache.org/jdo >>> >>> Craig L Russell >>> Secretary, Apache Software Foundation >>> c...@apache.org http://db.apache.org/jdo >> >> Craig L Russell >> Secretary, Apache Software Foundation >> c...@apache.org http://db.apache.org/jdo >>