[
https://issues.apache.org/jira/browse/TIKA-4977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18128704#comment-18128704
]
ASF GitHub Bot commented on TIKA-4977:
--------------------------------------
tballison opened a new pull request, #3365:
URL: https://github.com/apache/tika/pull/3365
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
Thanks for your contribution to [Apache Tika](https://tika.apache.org/)!
Your help is appreciated!
Before opening the pull request, please verify that
* there is an open issue on the [Tika issue
tracker](https://issues.apache.org/jira/projects/TIKA) which describes the
problem or the improvement. We cannot accept pull requests without an issue
because the change wouldn't be listed in the release notes.
* the issue ID (`TIKA-XXXX`)
- is referenced in the title of the pull request
- and placed in front of your commit messages surrounded by square
brackets (`[TIKA-XXXX] Issue or pull request title`)
* commits are squashed into a single one (or few commits for larger changes)
* Tika builds and unit tests pass with `./mvnw clean install` (`clean test`
alone cannot resolve the pipes plugin zips)
* if you used a generative AI tool: follow the [ASF Generative Tooling
Guidance](https://www.apache.org/legal/generative-tooling.html) (`Generated-by:
<tool>` in the commit message), and consider running the pre-flight in
`.skills/devs/pr-review/SKILL.md` — fix what it finds; don't paste its report
here
* there should be no conflicts when merging the pull request branch into the
*recent* `main` branch. If there are conflicts, please try to rebase the pull
request branch on top of a freshly pulled `main` branch
* if you add new module that downstream users will depend upon add it to
relevant group in `tika-bom/pom.xml`.
We will be able to faster integrate your pull request if these conditions
are met. If you have any questions how to fix your problem or about using Tika
in general, please sign up for the [Tika mailing
list](http://tika.apache.org/mail-lists.html). Thanks!
> Rust .rs source is detected as application/rls-services+xml
> -----------------------------------------------------------
>
> Key: TIKA-4977
> URL: https://issues.apache.org/jira/browse/TIKA-4977
> Project: Tika
> Issue Type: Bug
> Components: mime
> Affects Versions: 3.2.3
> Reporter: Zili Chen
> Priority: Major
>
> A plain Rust source file is detected as application/rls-services+xml when its
> .rs filename is supplied, although content-only detection correctly returns
> text/plain.
> Reproduced with tika-core 3.2.3. The same *.rs mapping remains in the current
> main branch (fe5ba58bc1bee4f37217c32a05a9b74db7fa51ba).
> {code:java}
> import java.io.ByteArrayInputStream;
> import java.nio.charset.StandardCharsets;
> import org.apache.tika.Tika;
> import org.apache.tika.metadata.Metadata;
> import org.apache.tika.metadata.TikaCoreProperties;
> byte[] source = "fn main() {}\n".getBytes(StandardCharsets.UTF_8);
> Tika tika = new Tika();
> System.out.println(tika.detect(source));
> Metadata metadata = new Metadata();
> metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, "main.rs");
> System.out.println(tika.detect(new ByteArrayInputStream(source), metadata));
> {code}
> Actual output:
> {noformat}
> text/plain
> application/rls-services+xml
> {noformat}
> Changing only the resource name to main.txt returns text/plain. Rust files
> with an Apache license comment behave the same way. PNG and PDF bytes named
> main.rs retain their binary MIME types, so this concerns the filename hint
> applied to otherwise plain text.
> The MIME database maps *.rs to application/rls-services+xml:
> https://github.com/apache/tika/blob/3.2.3/tika-core/src/main/resources/org/apache/tika/mime/tika-mimetypes.xml#L1010
> That extension is legitimately registered for RLS XML by RFC 4826:
> https://www.iana.org/assignments/media-types/application/rls-services%2Bxml
> Please distinguish Rust source from RLS XML when the .rs extension is
> supplied, while preserving genuine RLS XML detection and binary content
> detection. A Rust text MIME type, or a text/plain fallback for non-XML
> content, would avoid reporting Rust code as XML. Simply adding another
> unrelated *.rs glob in a custom MIME file raises a Conflicting extension
> pattern exception in 3.2.3.
> This was found while investigating Apache RAT 0.18 skipping Rust license
> checks. RAT separately maps this XML subtype to BINARY instead of scanning
> it; a fix for that downstream classification is being prepared in RAT. This
> ticket concerns the inaccurate Rust MIME result itself.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)