Merge pull request #1092 from ArthurHoaro/fix/scuttle-doctype-case

Ignore the case while checking DOCTYPE during the file import
This commit is contained in:
ArthurHoaro 2018-02-24 13:29:11 +01:00 committed by GitHub
commit bc4a0a672c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 2 deletions

View File

@ -108,7 +108,7 @@ class NetscapeBookmarkUtils
$filesize = $files['filetoupload']['size'];
$data = file_get_contents($files['filetoupload']['tmp_name']);
if (strpos($data, '<!DOCTYPE NETSCAPE-Bookmark-file-1>') === false) {
if (preg_match('/<!DOCTYPE NETSCAPE-Bookmark-file-1>/i', $data) === 0) {
return self::importStatus($filename, $filesize);
}
@ -160,7 +160,7 @@ class NetscapeBookmarkUtils
} else if ($post['privacy'] == 'public') {
// all imported links are public
$private = 0;
}
}
$newLink = array(
'title' => $bkm['title'],

View File

@ -126,6 +126,21 @@ class BookmarkImportTest extends PHPUnit_Framework_TestCase
$this->assertEquals(0, count($this->linkDb));
}
/**
* Attempt to import bookmarks from a file with a lowercase Doctype
*/
public function testImportLowecaseDoctype()
{
$files = file2array('lowercase_doctype.htm');
$this->assertStringMatchesFormat(
'File lowercase_doctype.htm (386 bytes) was successfully processed in %d seconds:'
.' 2 links imported, 0 links overwritten, 0 links skipped.',
NetscapeBookmarkUtils::import(null, $files, $this->linkDb, $this->conf, $this->history)
);
$this->assertEquals(2, count($this->linkDb));
}
/**
* Ensure IE dumps are supported
*/

View File

@ -0,0 +1,8 @@
<!DOCTYPE netscape-bookmark-file-1>
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><A HREF="https://private.tld" ADD_DATE="10/Oct/2000:13:55:36 +0300" PRIVATE="1" TAGS="private secret">Secret stuff</A>
<DD>Super-secret stuff you're not supposed to know about
<DT><A HREF="http://public.tld" ADD_DATE="1456433748" PRIVATE="0" TAGS="public hello world">Public stuff</A>
</DL><p>