* [sup-talk] Bug reading/writing contacts with \" in them
@ 2011-01-24 5:20 Ico
2011-01-24 18:20 ` [sup-devel] [PATCH] " Michael Stapelberg
0 siblings, 1 reply; 2+ messages in thread
From: Ico @ 2011-01-24 5:20 UTC (permalink / raw)
To: sup-talk
Hi all,
I just found out about Sup yesterday, great stuff, thanks for that to all
involved with development!
I did run into a small bug yesterday though. I was able to analyze it a bit,
but my Ruby is not good enough to propose a solid fix.
The problem occurs when contacts have a certain combination of backslashes and
quotes in them. I 'imported' my mutt aliases with a simple script converting
the format (too bad it is *almost* the same but not quite), and one of the
contacts looked like this:
somename: \"Some, Name\" <somename@somedomain.com>
It seems there is a problem somewhere with parsing and writing out the backslashes, which
get escaped each time sup saves the contact list, doubling the number of backslashes each time.
somename: Some, Name\\ <somename@somedomain.com>
somename: Some, Name\\\\ <somename@somedomain.com>
somename: Some, Name\\\\\\\\ <somename@somedomain.com>
and so on.
I first got a hint something was wrong when I noticed that sup was starting up slower
and slower each time, and took over 10 minutes after a few tries. It seems that the regexp
at person.rb:79
when /(.+?) ((\S+?)@\S+) \3/
goes haywire backtracking through all the backslashes, I guess the first .+?
probably uses exponential time when trying to match the huge number of \'s
Anyway, I did some quick trials to find where exaclty the bug is, but I
couldn't come up with the proper fix right away. My problem has of course gone
away by just removing the backslashes from the contacts file, but I hope
somebody with more ruby-sense is willing to look into this one.
Thanks,
Ico
--
:wq
^X^Cy^K^X^C^C^C^C
_______________________________________________
sup-talk mailing list
sup-talk@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-talk
^ permalink raw reply [flat|nested] 2+ messages in thread
* [sup-devel] [PATCH] Re: [sup-talk] Bug reading/writing contacts with \" in them
2011-01-24 5:20 [sup-talk] Bug reading/writing contacts with \" in them Ico
@ 2011-01-24 18:20 ` Michael Stapelberg
0 siblings, 0 replies; 2+ messages in thread
From: Michael Stapelberg @ 2011-01-24 18:20 UTC (permalink / raw)
To: sup-devel; +Cc: sup-talk
[-- Attachment #1: Type: text/plain, Size: 1083 bytes --]
Hi Ico,
Excerpts from Ico's message of 2011-01-24 06:20:47 +0100:
> The problem occurs when contacts have a certain combination of backslashes and
> quotes in them. I 'imported' my mutt aliases with a simple script converting
> the format (too bad it is *almost* the same but not quite), and one of the
> contacts looked like this:
>
> somename: \"Some, Name\" <somename@somedomain.com>
As discussed on IRC, I’ve made the following findings:
• Some combinations of email addresses (phrase + addr-spec in RFC822
terminology) need to be escaped, for example when they contain a comma or a
quote.
• This escaping happens in Person#full_address by using @name.inspect
• Person#full_address also is used when saving contacts back to contacts.txt
• Person#initialize partly strips the quotes (line 10/11), but does not handle
backslashes.
Attached is a patch which fixes the issue. Input like "Rob, Post\" will first
be turned into "Rob, Post\\" when initially escaping, but will then stay "Rob,
Post\\" (no more exploding backslashes).
Best regards,
Michael
[-- Attachment #2: 0001-Bugfix-Un-escape-slashes-when-initializing-a-new-Per.patch --]
[-- Type: application/octet-stream, Size: 798 bytes --]
From 318d1a4f88a75776123471a665807923c8463dd0 Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <michael@stapelberg.de>
Date: Mon, 24 Jan 2011 19:18:57 +0100
Subject: [PATCH] Bugfix: Un-escape slashes when initializing a new Person
In Person#full_address, we add slashes by using @name.inspect, so we need to
take care of them here.
---
lib/sup/person.rb | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/lib/sup/person.rb b/lib/sup/person.rb
index 28887b3..45660c0 100644
--- a/lib/sup/person.rb
+++ b/lib/sup/person.rb
@@ -9,6 +9,7 @@ class Person
@name = if name
name = name.strip.gsub(/\s+/, " ")
name =~ /^(['"]\s*)(.*?)(\s*["'])$/ ? $2 : name
+ name.gsub('\\\\', '\\')
end
@email = email.strip.gsub(/\s+/, " ").downcase
--
1.7.1
[-- Attachment #3: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-01-24 18:27 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-24 5:20 [sup-talk] Bug reading/writing contacts with \" in them Ico
2011-01-24 18:20 ` [sup-devel] [PATCH] " Michael Stapelberg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox