[jboss-osgi-issues] [JBoss JIRA] (JBOSGI-780) ManifestBuilder does not work on windows if line has 511 bytes

Martin Basovnik (JIRA) issues at jboss.org
Tue Jun 23 02:38:01 EDT 2015


     [ https://issues.jboss.org/browse/JBOSGI-780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Basovnik updated JBOSGI-780:
-----------------------------------
    Description: 
Lines in Windows end with {{CRLF}} ({{\r\n}}). Method {{org.jboss.osgi.metadata.ManifestBuilder.getManifest()}} does not count with this fact. If a line has exactly {{(n*512)-1}} bytes + {{CRLF}} then method {{Manifest#read}} will throw {{IOException}} and the building of manifest will fail.

The following line will crop byte {{\n}}:
{code:java}
byte[] lbuf = new byte[512];
attr.read(fis, lbuf);
{code}

and then the following condition will fail because the value is {{\r}}.
{code:java}
if (lbuf[--len] != '\n') {
                throw new IOException("manifest line too long");
}
{code}

  was:
Windows lines end with {{CRLF}} ({{\r\n}}). Method {{org.jboss.osgi.metadata.ManifestBuilder.getManifest()}} does not count with this fact. If a line has exactly {{(n*512)-1}} bytes + {{CRLF}} then method {{Manifest#read}} will throw {{IOException}} and the building of manifest will fail.

The following line will crop byte {{\n}}:
{code:java}
byte[] lbuf = new byte[512];
attr.read(fis, lbuf);
{code}

and then the following condition will fail because the value is {{\r}}.
{code:java}
if (lbuf[--len] != '\n') {
                throw new IOException("manifest line too long");
}
{code}



> ManifestBuilder does not work on windows if line has 511 bytes
> --------------------------------------------------------------
>
>                 Key: JBOSGI-780
>                 URL: https://issues.jboss.org/browse/JBOSGI-780
>             Project: JBoss OSGi
>          Issue Type: Bug
>          Components: other
>         Environment: windows
>            Reporter: Martin Basovnik
>
> Lines in Windows end with {{CRLF}} ({{\r\n}}). Method {{org.jboss.osgi.metadata.ManifestBuilder.getManifest()}} does not count with this fact. If a line has exactly {{(n*512)-1}} bytes + {{CRLF}} then method {{Manifest#read}} will throw {{IOException}} and the building of manifest will fail.
> The following line will crop byte {{\n}}:
> {code:java}
> byte[] lbuf = new byte[512];
> attr.read(fis, lbuf);
> {code}
> and then the following condition will fail because the value is {{\r}}.
> {code:java}
> if (lbuf[--len] != '\n') {
>                 throw new IOException("manifest line too long");
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


More information about the jboss-osgi-issues mailing list