[ https://issues.apache.org/jira/browse/MSHARED-309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Osipov closed MSHARED-309. ---------------------------------- Resolution: Won't Fix Good, please go ahead and report to Oracle. I am closing as won't fix as discussed. Thank you! > MavenArchiveConfiguration does not properly handle line breaks in Manifest > attributes > ------------------------------------------------------------------------------------- > > Key: MSHARED-309 > URL: https://issues.apache.org/jira/browse/MSHARED-309 > Project: Maven Shared Components > Issue Type: Bug > Components: maven-archiver > Affects Versions: maven-archiver-2.5 > Reporter: Clément MATHIEU > Labels: close-pending > > Due to character escaping issue it is very easy to an create invalid Manifest. > The JAR specification defines a line as follows: > {noformat} > header: name : value > name: alphanum *headerchar > value: SPACE *otherchar newline *continuation > continuation: SPACE *otherchar newline > {noformat} > An header can be spread over several lines as long as the continuation starts > with a space. This feature is especially used to break long lines since they > cannot be longer that 72 chars. > The maven-jar-plugin relies on maven-archive to configure the zip archive. > More specifically, MavenArchiveConfiguration.manifestEntries is used to store > the Manifest configuration. However, the names and values are stored as is by > the plexus converter (raw textContent value). > Lets take the following pom file: > {noformat} > <configuration> > <archive> > <manifestEntries> > <Implementation-Title>foo > bar > </Implementation-Title> > </manifestEntries> > </archive> > </configuration> > {noformat} > The following name/value will be stored in a manifestEntries: > {noformat} > "Implementation-Title" -> "foo\nbar" > {noformat} > To create the Manifest file we use the Manifest class from plexus-archive > which itself extends the Manifest file from the JDK. Neither of theses two > classes protect line breaks properly leading to a corrupted Manifest. This > can also occur if you use tab indentation and your IDE split long line etc. > I had like to provide a patch to fix this issue, but I'm not sure if we want > to process the textContent to remove the line breaks and trim each line in > maven-archiver or if the line breaks should be handled more generically by > plexus-archiver. > We could also detect that a line break is present in the String and fail the > build since this is most likely unexpected. > Any feedback is welcome before I spend time writing a patch ! -- This message was sent by Atlassian JIRA (v6.3.4#6332)