]
Arcadiy Ivanov resolved JBOSGI-780.
-----------------------------------
Fix Version/s: JBossOSGI 2.3.1
Resolution: Done
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
Assignee: Arcadiy Ivanov
Fix For: JBossOSGI 2.3.1
Lines on Windows OS end with {{CRLF}} ({{\r\n}}). Method
[{{org.jboss.osgi.metadata.ManifestBuilder.getManifest()}}|https://github.com/jbosgi/jbosgi-metadata/blob/master/src/main/java/org/jboss/osgi/metadata/ManifestBuilder.java#L93]
does not count with this fact. If {{bytes.length == 511}} then a line will have 513 bytes
and method {{Manifest#read}} will throw {{IOException}} and the building of the manifest
will fail.
Reason:
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 of {{lbuf\[--len\]}}
expression is {{'\r'}}.
{code:java}
if (lbuf[--len] != '\n') {
throw new IOException("manifest line too long");
}
{code}