View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000517 | Main CAcert Website | GPG/PGP | public | 2008-03-14 16:42 | 2013-01-15 02:12 |
Reporter | ph3 | Assigned To | |||
Priority | normal | Severity | crash | Reproducibility | have not tried |
Status | closed | Resolution | open | ||
Fixed in Version | 2009 Q2 | ||||
Summary | 0000517: Can get any UUCP Style email address signed | ||||
Description | I have a OpenPGP key with _two_ UUCP style E-Mail addresses. The system said: # Name Email Result 1 Error: Both Name and Email address are empty 2 Philipp Schafft The name is OK. The email is empty. 3 Philipp Schafft The name is OK. The email is empty. The systems seems to forget about them as they seems to be invalid. | ||||
Additional Information | UUCP Style E-Mail addresses are addresses in form 'host!user'. They _ARE_ sitll valid even outside UUCP ans supported by all MTAs I know. The major benefit is that spambots don't find them :) Consider you check email addys by a regex like this one: /^([^\@]+)\@(.+)$/ and use $1 as the username and $2 as the host part you may use this to check uucp style addresses: /^([^\!]+)\!([^\!]+)$/ and use $1 as the host and $2 as the username. You also can use this regex to convert it: s/^([^\!]+)\!([^\!]+)$/$2\@$1/; | ||||
Tags | No tags attached. | ||||
Attached Files | gpg.patch (2,697 bytes)
--- gpg.php.orig 2009-04-09 14:58:20.000000000 +0200 +++ gpg.php 2009-04-09 14:59:32.000000000 +0200 @@ -116,38 +116,11 @@ if($bits[6] != "") $expires = 1; } - //if(!strstr($line, "@")) continue; - - - - $pos = strpos($bits[9], "(") - 1; - $nocomment = 0; - if($pos < 0) - { - $nocomment = 1; - $pos = strpos($bits[9], "<") - 1; - } - if($pos < 0) - { - $pos = strlen($bits[9]); - } - $name = trim(hex2bin(trim(substr($bits[9], 0, $pos)))); - $nameok=verifyName($name); - $resulttable.="<td bgcolor='#".($nameok?"c0ffc0":"ffc0c0")."'>$name</td>"; - - - if($nocomment == 0 && (strpos($bits[9],")")>$pos)) - { - $pos += 2; - $pos2 = strpos($bits[9], ")"); - $comm = trim(hex2bin(trim(substr($bits[9], $pos, $pos2 - $pos)))); - if($comm != "") - $comment[] = $comm; - $pos = $pos2 + 3; - } else { - $pos = strpos($bits[9], "<") + 1; - } + $name=""; + $comm=""; $mail=""; + $uidformatwrong=0; + if(preg_match("/\@.*\@/",$bits[9])) { showheader(_("Welcome to CAcert.org")); @@ -158,23 +131,46 @@ unset($oldid); exit(); } - if (preg_match("/<([\w.-]*\@[\w.-]*)>/", $bits[9],$match)) { - //echo "Found: ".$match[1]; - $mail = trim(hex2bin($match[1])); + + + if(preg_match("/^([^\(\[@]+) \(([^@<>)]*)\) <([\w=\/%.-]*\@[\w.-]*|[\w.-]*\![\w=\/%.-]*)>/",$bits[9],$matches)) + { + $name=trim(hex2bin($matches[1])); + $nameok=verifyName($name); + $nocomment=0; + $comm=trim(hex2bin($matches[2])); + $mail=trim(hex2bin($matches[3])); + } + elseif(preg_match("/^([^\(\[@]+) <([\w=\/%.-]*\@[\w.-]*|[\w.-]*\![\w=\/%.-]*)>/",$bits[9],$matches)) + { + $name=trim(hex2bin($matches[1])); + $nocomment=1; + $mail=trim(hex2bin($matches[2])); } else { - //echo "Not found!\n"; + $nocomment=1; + $uidformatwrong=1; } - + $nameok=verifyName($name); $emailok=verifyEmail($mail); - $resulttable.="<td bgcolor='#".($emailok?"c0ffc0":"ffc0c0")."'>$mail</td>"; + + if($comm != "") + $comment[] = $comm; + + $resulttable.="<td bgcolor='#".($nameok?"c0ffc0":"ffc0c0")."'>".sanitizeHTML($name)."</td>"; + $resulttable.="<td bgcolor='#".($emailok?"c0ffc0":"ffc0c0")."'>".sanitizeHTML($mail)."</td>"; + $uidok=0; if($bits[1]=="r") { $rmessage=_("Error: UID is revoked"); } + elseif($uidformatwrong==1) + { + $rmessage=_("The format of the UID was not recognized. Please use 'Name (comment) <email@domain>' "); + } elseif($mail=="" and $name=="") { $rmessage=_("Error: Both Name and Email address are empty"); | ||||
Reviewed by | |||||
Test Instructions | |||||
related to | 0000518 | new | Valid E-Mail addresses with specal chars are rejected |
|
The regular expressions are also matching spaces and other whitespaces: "Philipp is not an email address! or?" would match /^([^\!]+)\!([^\!]+)$/ but it's clearly not a UUCP address. |
|
the regex was only to show the general schema as /^([^\@]+)\@(.+)$/ is not a good regex for 'normal' addresses. The same rules as in 0000518 apply to the address. Maybe the system should reformat it internally to a single schema and check that to reduce the need for a big regex or multiple similar ones. |
|
Yesterday I uploaded a OpenPGP key with a normal not UUCP style mail addy with a '=' included. The behavior of the system is the same: it gets accepted without need to verify it before. I believe that the regex problem is the same as in 0000518. |
|
The bug has been fixed. Please test and close this report. |
|
Closing issues that have been resolved more than one year ago… |
Date Modified | Username | Field | Change |
---|---|---|---|
2008-03-14 16:42 | ph3 | New Issue | |
2008-10-14 12:07 | Sourcerer | Note Added: 0001233 | |
2008-10-14 14:34 | ph3 | Note Added: 0001235 | |
2008-10-14 14:36 | ph3 | Relationship added | related to 0000518 |
2009-04-07 15:48 | ph3 | Note Added: 0001349 | |
2009-04-07 16:55 | Sourcerer | File Added: gpg.patch | |
2009-04-09 13:06 | Sourcerer | File Deleted: gpg.patch | |
2009-04-09 13:07 | Sourcerer | File Added: gpg.patch | |
2009-04-19 23:14 | Sourcerer | Note Added: 0001374 | |
2009-04-19 23:14 | Sourcerer | Status | new => solved? |
2012-05-30 21:17 | NEOatNHNG | Note Added: 0003041 | |
2012-05-30 21:17 | NEOatNHNG | Status | solved? => closed |
2013-01-15 02:12 | Werner Dworak | Fixed in Version | => 2009 Q2 |