diff --git a/PBot/AntiFlood.pm b/PBot/AntiFlood.pm index b806f6f1..278ab935 100644 --- a/PBot/AntiFlood.pm +++ b/PBot/AntiFlood.pm @@ -21,6 +21,7 @@ use PBot::LagChecker; use Time::HiRes qw(gettimeofday tv_interval); use Time::Duration; use POSIX qw/strftime/; +use Text::CSV; use Carp (); sub new { @@ -728,6 +729,8 @@ sub check_bans { my ($nick) = $mask =~ m/^([^!]+)/; my %aliases = $self->{pbot}->{messagehistory}->{database}->get_also_known_as($nick); + my $csv = Text::CSV->new; + my ($do_not_validate, $bans); foreach my $alias (keys %aliases) { next if $alias =~ /^Guest\d+(?:!.*)?$/; @@ -748,7 +751,8 @@ sub check_bans { foreach my $nickserv (@nickservs) { my @gecoses; if (exists $aliases{$alias}->{gecos}) { - @gecoses = split /,/, $aliases{$alias}->{gecos}; + $csv->parse($aliases{$alias}->{gecos}); + @gecoses = $csv->fields; } else { @gecoses = (undef); } diff --git a/PBot/MessageHistory_SQLite.pm b/PBot/MessageHistory_SQLite.pm index 2512fec6..1f3f9d3f 100644 --- a/PBot/MessageHistory_SQLite.pm +++ b/PBot/MessageHistory_SQLite.pm @@ -11,6 +11,7 @@ use strict; use DBI; use Carp qw(shortmess); use Time::HiRes qw(gettimeofday); +use Text::CSV; sub new { if(ref($_[1]) eq 'HASH') { @@ -1168,6 +1169,8 @@ sub get_also_known_as { my $nickserv_sth = $self->{dbh}->prepare('SELECT nickserv FROM Nickserv WHERE id = ?'); my $gecos_sth = $self->{dbh}->prepare('SELECT gecos FROM Gecos WHERE id = ?'); + my $csv = Text::CSV->new; + foreach my $id (keys %ids) { $hostmask_sth->bind_param(1, $id); $hostmask_sth->execute(); @@ -1202,9 +1205,15 @@ sub get_also_known_as { foreach my $aka (keys %akas) { if ($akas{$aka}->{id} == $id) { if (exists $akas{$aka}->{gecos}) { - $akas{$aka}->{gecos} .= ",$row->{gecos}"; + $csv->parse($akas{$aka}->{gecos}); + my @gecos = $csv->fields; + push @gecos, $row->{gecos}; + $csv->combine(@gecos); + $akas{$aka}->{gecos} = $csv->string; } else { - $akas{$aka}->{gecos} = $row->{gecos}; + my @gecos = ($row->{gecos}); + $csv->combine(@gecos); + $akas{$aka}->{gecos} = $csv->string; } } }