<div dir="ltr"><div>Hello everybody,</div><div><br></div><div>I am running an application which uses libmagic python wrapper to sanitize allowed input file type.</div><div>Currently I am running this task under alpine linux 3.21 (and python 3.12) which uses libmagic 5.46.</div><div><br></div><div>I had an issue with detecting ZIP archives using the magic.from_buffer method, because it returns "octet-stream":</div><div><br></div><div>In [1]: with open('/tmp/sample.zip', 'rb') as buffer:<br>   ...:     print(magic.from_buffer(buffer.read(), mime=True))<br>application/octet-stream<br></div><div><br></div><div>The strange part is that when using the magic.from_file method it does recognize the file as a ZIP archive:</div><div><br class="gmail-Apple-interchange-newline">In [2]: magic.from_file('/tmp/sample.zip', mime=True)<br>Out[2]: 'application/zip'</div><div><br></div><div>I checked that by moving back to alpine linux 3.20 which uses libmagic 5.45 the issue in magic.from_buffer does not occur. Thus I suspect that it could be something which was introduces in version 5.46 (or in the alpine package).</div><div><br></div><div>My test file is a simple zip containing a single text file named "sample.txt" with "sample" as text content.</div><div><br></div><div>I need to support the direct read from buffer since during the file-upload process if the uploaded file is small it is handled directly in memory.</div><div><br></div><div>Has anyone else had the same problem? Is this a problem of the alpine-version of libmagic?</div><div><br></div><div>Regards,</div><div>Davide</div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><table border="0" cellspacing="0" cellpadding="0" style="font-family:"Times New Roman";width:420px"><tbody><tr valign="top"><td><table border="0" cellspacing="0" cellpadding="0"><tbody><tr valign="top"><td style="text-align:initial;vertical-align:top;padding:0px 8px"><a href="https://www.certego.net/" target="_blank"><img width="96" height="96" src="https://www.certego.net/email/certego.png" alt="" style="border-radius:0px"></a></td><td style="text-align:initial;vertical-align:top;padding:4px 0px"><div style="padding-top:2px;color:rgb(0,172,237);font-weight:bold;font-stretch:normal;font-size:18px;line-height:normal;font-family:sans-serif;letter-spacing:1px">Davide Setti</div><div style="padding-top:2px;color:rgb(32,32,32);font-weight:bold;font-stretch:normal;font-size:14px;line-height:normal;font-family:sans-serif">Security Platform Lead Engineer, Certego</div><div style="padding-top:6px"><a href="https://www.linkedin.com/company/certego" target="_blank"><img width="24" height="24" src="https://www.certego.net/email/linkedin.png" style="border-radius:0px;border:0px;width:24px;min-height:24px"></a> <a href="https://twitter.com/Certego_IRT" target="_blank"><img width="24" height="24" src="https://www.certego.net/email/twitter.png" style="border-radius:0px;border:0px;width:24px;min-height:24px"></a> <a href="https://github.com/certego" target="_blank"><img width="24" height="24" src="https://www.certego.net/email/github.png" style="border-radius:0px;border:0px;width:24px;min-height:24px"></a> <a href="https://www.youtube.com/CERTEGOsrl" target="_blank"><img width="24" height="24" src="https://www.certego.net/email/youtube.png" style="border-radius:0px;border:0px;width:24px;min-height:24px"></a> </div></td></tr></tbody></table></td></tr></tbody></table><div style="font-stretch:normal;font-size:8px;line-height:normal;font-family:sans-serif;width:420px;text-align:justify;vertical-align:top;padding:8px 0px;color:rgb(224,224,224)">Use of the information within this document constitutes acceptance for use in an "as is" condition. There are no warranties with regard to this information; Certego has verified the data as thoroughly as possible. Any use of this information lies within the user's responsibility. In no event shall Certego be liable for any consequences or damages, including direct, indirect, incidental, consequential, loss of business profits or special damages, arising out of or in connection with the use or spread of this information.</div></div></div></div></div></div></div></div></div></div></div>