[mapserver-dev] Corrupt MapServer Zip outputs

Even Rouault even.rouault at spatialys.com
Tue Nov 23 08:22:25 PST 2021


Hi Seth,
> I tried with both of these in the Mapfile, and also setting in the 
> command window (SET CPL_CREATE_ZIP64=YES) but still getting a corrupt zip:
>
> CONFIG "CPL_CREATE_ZIP64" "NO"
> CONFIG "CPL_CREATE_ZIP64" "YES"
>
> Is there any ogr command to test the low level zip funcion in GDAL?
No
> I thought "ogr2ogr foo.shp.zip something" command was a higher level 
> one which meant it might not be using the same approach.
I believe it should be representative enough of how MapServer uses GDAL 
zip API.
>
> I tried both the Windows unzip, 7-zip (x64) and opening on Linux with 
> Ark and unzip all with the same errors.
>
> The strangest thing is that saving via IIS through the browser is 
> producing a valid zip using the same OUTPUTFORMAT..
> I'm going to set up the msautotest and roads example in IIS to test if 
> that works.
> Could it be related to a change in the Windows cmd shell?

Maybe? But as I mentioned before, I'd thought this would rather be some 
msIO_needBinaryStdout() call missing. Perhaps IIS already sets stdout to 
binary mode ?

For the sake of testing, what if you add a call to 
msIO_needBinaryStdout() in mapserv.c, let's say at 
https://github.com/MapServer/MapServer/blob/main/mapserv.c#L243 . I'm 
not saying this is necessarily the right fix

Even

>
> Seth
>
> --
> web:http://geographika.co.uk
> twitter: @geographika
>
>
> On Sun, Nov 21, 2021, at 4:54 PM, Even Rouault wrote:
>>
>>
>> Le 21/11/2021 à 16:43, Seth G a écrit :
>>> Steve - in my case WMS are all fine, it is only related to zipped 
>>> outputs using OUTPUTFORMAT blocks.
>>>
>>> I was trying to find a working commit for the bisect, but went back 
>>> to 7-2 without finding one.
>>>
>>> I built MapServer main, and the latest 7-6, 7-4, and 7-2 branches 
>>> and ran the msautotest:
>>>
>>> cd /D D:\GitHub\mapserver\msautotest\wxs
>>> mapserv -nh 
>>> "QUERY_STRING=map=wfs_ogr.map&service=WFS&REQUEST=GetFeature&TYPENAME=road&version=2.0.0&outputformat=shapezip" 
>>> > output.zip
>>>
>>> All zips were invalid. However the same command does work with the 
>>> https://www.gisinternals.com/query.html?content=filelist&file=release-1911-x64-gdal-2-4-4-mapserver-7-4-3.zip 
>>> <https://www.gisinternals.com/query.html?content=filelist&file=release-1911-x64-gdal-2-4-4-mapserver-7-4-3.zip> 
>>> build. It looks like something changed between GDAL 2.4 and 3.3
>>>
>>> Likely function is CPLCreateZip (as this is used by MapServer as 
>>> mentioned by Even in the other thread), found in: 
>>> https://github.com/OSGeo/gdal/commits/v3.3.3/gdal/port/cpl_minizip_zip.cpp 
>>> <https://github.com/OSGeo/gdal/commits/v3.3.3/gdal/port/cpl_minizip_zip.cpp>
>>>
>>> There are only a couple of commits between versions that look like 
>>> they might be relevant?
>>>
>>> https://github.com/OSGeo/gdal/commit/0e159e1ba8ee9e7b4a56bd0b53d16de0acf89485#diff-b156d979e3531903e620bc0616c120584c8e28945247f50b29e81c5a7a49df0b 
>>> <https://github.com/OSGeo/gdal/commit/0e159e1ba8ee9e7b4a56bd0b53d16de0acf89485#diff-b156d979e3531903e620bc0616c120584c8e28945247f50b29e81c5a7a49df0b>
>>>
>>> https://github.com/OSGeo/gdal/commit/edcdc5b0a57b4fab159b14180141ee42a0408830#diff-b156d979e3531903e620bc0616c120584c8e28945247f50b29e81c5a7a49df0b 
>>> <https://github.com/OSGeo/gdal/commit/edcdc5b0a57b4fab159b14180141ee42a0408830#diff-b156d979e3531903e620bc0616c120584c8e28945247f50b29e81c5a7a49df0b>
>>>
>>> Is there a test / output zip file in the GDAL tests that could be 
>>> used to verify?
>>
>> Not necessarily generated by recent GDAL versions, and if they were, 
>> most certainly from Linux builds
>>
>> What is weird is that you reported that .shp.zip files generated by 
>> recent gisinternals version with "ogr2ogr foo.shp.zip something" were 
>> correct.
>>
>> Hum actually I see that .shp.zip are generated with the 
>> CPL_CREATE_ZIP64 environment variable set to NO (the default is YES)
>>
>> Can you try that ?
>>
>> It might be that your .zip reader aren't Zip64 ready, or that GDAL 
>> write them in a slightly invalid way
>>
>>> I have a working and invalid zip from msautotest if that helps.
>> yes, could be useful (but I suspect this is a difference between 
>> regular ZIP vs Zip64 one)
>>
>>>
>>> Seth
>>>
>>>
>>>
>>> --
>>> web:http://geographika.co.uk <http://geographika.co.uk>
>>> twitter: @geographika
>>>
>>>
>>> On Sun, Nov 21, 2021, at 3:51 PM, Steve Lime wrote:
>>>> This seems related...
>>>> https://github.com/MapServer/MapServer/issues/6412 
>>>> <https://github.com/MapServer/MapServer/issues/6412>
>>>>
>>>> WMS fails but shp2img works, as does WFS. Could it be WMS specific? 
>>>> Would be helpful to try mode=map and see if that works.
>>>>
>>>> On Sun, Nov 21, 2021 at 8:45 AM Seth G <sethg at geographika.co.uk 
>>>> <mailto:sethg at geographika.co.uk>> wrote:
>>>>
>>>>     Thanks Jérome. and Even. Sorry I should have checked for the
>>>>     headers in that zip first.
>>>>     I'll attempt the bisecting now!
>>>>
>>>>     --
>>>>     web:http://geographika.co.uk <http://geographika.co.uk>
>>>>     twitter: @geographika
>>>>
>>>>     On Sun, Nov 21, 2021, at 1:12 PM, Even Rouault wrote:
>>>>     > Seth,
>>>>     >
>>>>     > The .zip extension of this test file is a bit misleading, as
>>>>     the HTTP
>>>>     > headers are not stripped (testing HTTP headers is something
>>>>     good to test
>>>>     > in some tests). I've issued
>>>>     > https://github.com/MapServer/MapServer/pull/6440
>>>>     <https://github.com/MapServer/MapServer/pull/6440> to rename
>>>>     the expected
>>>>     > file though to avoid the confusion
>>>>     >
>>>>     > You can obtain a valid .zip file without headers with
>>>>     >
>>>>     > ../../build/mapserv -conf ../etc/mapserv.conf -nh
>>>>     >
>>>>     QUERY_STRING="map=wfs_ogr.map&SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=road&featureid=road.1521&OUTPUTFORMAT=SHAPEZIP"
>>>>
>>>>     >  > out.zip
>>>>     >
>>>>     > Even
>>>>     >
>>>>     > Le 21/11/2021 à 12:32, Seth G a écrit :
>>>>     >> Hi all,
>>>>     >>
>>>>     >> Following on from the post at
>>>>     https://lists.osgeo.org/pipermail/mapserver-users/2021-November/082429.html
>>>>     <https://lists.osgeo.org/pipermail/mapserver-users/2021-November/082429.html>
>>>>     I've been trying to find where the cause of the corrupt zips
>>>>     may be.
>>>>     >>
>>>>     >> There is a msautotest to create zip files and check against
>>>>     the expected output, however the expected output also seems to
>>>>     be an invalid zip file - I tried on both Windows and Linux.
>>>>     >>
>>>>     >> Even stranger this is both in the main branch (simply
>>>>     download the file with the following URL to test), and also
>>>>     going back in the history to 2016.
>>>>     >>
>>>>     >>
>>>>     https://github.com/MapServer/MapServer/blob/main/msautotest/wxs/expected/wfsogr10_shapezip.zip
>>>>     <https://github.com/MapServer/MapServer/blob/main/msautotest/wxs/expected/wfsogr10_shapezip.zip>
>>>>     >>
>>>>     >> I had a working process using shapezips in a 7.6 release of
>>>>     MapServer so its hard to understand what could have changed,
>>>>     MapServer, GDAL, or zip formats themselves?
>>>>     >> I'll attempt a Git bisect but if the issue is outside
>>>>     MapServer it won't find an issue.
>>>>     >>
>>>>     >> If anyone is able to open the zip file successfully please
>>>>     let me know (tried with Ark and unzip on Linux and Windows
>>>>     inbuilt unzip and 7-zip on Windows). Error seems to be "87
>>>>     extra bytes at beginning or within zip file".
>>>>     >>
>>>>     >> Seth
>>>>     >>
>>>>     >> --
>>>>     >> web:http://geographika.co.uk <http://geographika.co.uk>
>>>>     >> twitter: @geographika
>>>>     >> _______________________________________________
>>>>     >> MapServer-dev mailing list
>>>>     >> MapServer-dev at lists.osgeo.org
>>>>     <mailto:MapServer-dev at lists.osgeo.org>
>>>>     >> https://lists.osgeo.org/mailman/listinfo/mapserver-dev
>>>>     <https://lists.osgeo.org/mailman/listinfo/mapserver-dev>
>>>>     >
>>>>     > --
>>>>     > http://www.spatialys.com <http://www.spatialys.com>
>>>>     > My software is free, but my time generally not.
>>>>     _______________________________________________
>>>>     MapServer-dev mailing list
>>>>     MapServer-dev at lists.osgeo.org
>>>>     <mailto:MapServer-dev at lists.osgeo.org>
>>>>     https://lists.osgeo.org/mailman/listinfo/mapserver-dev
>>>>     <https://lists.osgeo.org/mailman/listinfo/mapserver-dev>
>>>>
>>>
>> -- 
>> http://www.spatialys.com  <http://www.spatialys.com>
>> My software is free, but my time generally not.
>
-- 
http://www.spatialys.com
My software is free, but my time generally not.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-dev/attachments/20211123/cf45bf4c/attachment-0001.html>


More information about the MapServer-dev mailing list