[ 
https://issues.apache.org/jira/browse/LUCENE-5827?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Uwe Schindler updated LUCENE-5827:
----------------------------------

    Attachment: LUCENE-5827.patch

Simple patch. Test now passes.

> Make all Directory implementations correctly fail with 
> IllegalArgumentException if slices are out of bounds
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-5827
>                 URL: https://issues.apache.org/jira/browse/LUCENE-5827
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/store
>    Affects Versions: 4.8, 4.9
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>         Attachments: LUCENE-5827.patch
>
>
> After implementing LUCENE-5681, I noticed, that some directory 
> implementations (like NIOFSDirectory) do not do bounds checks on slice 
> creation. We should do this to early detect bugs, if file formats break 
> because of index corrumption.
> This test in BaseDirectoryTestCase does not pass for all directory impls:
> {code:java}
>   public void testSliceOutOfBounds() throws Exception {
>     Directory dir = getDirectory(createTempDir("testSliceOutOfBounds"));
>     IndexOutput o = dir.createOutput("out", newIOContext(random()));
>     final int len = random().nextInt(2040) + 8;
>     byte[] b = new byte[len];
>     o.writeBytes(b, 0, len);
>     o.close();
>     IndexInput i = dir.openInput("out", newIOContext(random()));
>     try {
>       i.slice("slice1", 0, len + 1);
>       fail("Did not get IllegalArgumentException");
>     } catch (IllegalArgumentException iae) {
>       // pass
>     }
>     try {
>       i.slice("slice2", -1, len);
>       fail("Did not get IllegalArgumentException");
>     } catch (IllegalArgumentException iae) {
>       // pass
>     }
>     IndexInput slice = i.slice("slice3", 4, len / 2);
>     try {
>       slice.slice("slice3sub", 1, len / 2);
>       fail("Did not get IllegalArgumentException");
>     } catch (IllegalArgumentException iae) {
>       // pass
>     }
>     i.close();
>     dir.close();    
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to