> On Nov 2, 2017, at 10:35 PM, Sam Ruby <[email protected]> wrote:
>
> On Thu, Nov 2, 2017 at 11:34 PM, Craig Russell <[email protected]> wrote:
>>
>>> On Nov 2, 2017, at 4:24 PM, Sam Ruby <[email protected]> wrote:
>>>
>>> On Thu, Nov 2, 2017 at 6:58 PM, Craig Russell <[email protected]> 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 [email protected]
>>>
>>> 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?
Craig
> 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 <[email protected]> wrote:
>>>>>
>>>>> Hi Sam,
>>>>>
>>>>>> On Nov 2, 2017, at 12:08 PM, Sam Ruby <[email protected]> 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 <[email protected]>
>>>>>> 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
>>>>>>> [email protected] http://db.apache.org/jdo
>>>>>>>
>>>>>
>>>>> Craig L Russell
>>>>> Secretary, Apache Software Foundation
>>>>> [email protected] http://db.apache.org/jdo
>>>>
>>>> Craig L Russell
>>>> Secretary, Apache Software Foundation
>>>> [email protected] http://db.apache.org/jdo
>>>>
>>
>> Craig L Russell
>> Secretary, Apache Software Foundation
>> [email protected] http://db.apache.org/jdo
Craig L Russell
Secretary, Apache Software Foundation
[email protected] http://db.apache.org/jdo