Mercurial > hg > orthanc
comparison OrthancFramework/Resources/ThirdParty/minizip/unzip.h @ 5428:8174e45f48d8
Upgraded minizip library to stay away from CVE-2023-45853
author | Alain Mazy <am@osimis.io> |
---|---|
date | Fri, 17 Nov 2023 08:58:40 +0100 |
parents | bcfb53d1bc56 |
children |
comparison
equal
deleted
inserted
replaced
5427:111e21b4f8bc | 5428:8174e45f48d8 |
---|---|
81 #define UNZ_CRCERROR (-105) | 81 #define UNZ_CRCERROR (-105) |
82 | 82 |
83 /* tm_unz contain date/time info */ | 83 /* tm_unz contain date/time info */ |
84 typedef struct tm_unz_s | 84 typedef struct tm_unz_s |
85 { | 85 { |
86 uInt tm_sec; /* seconds after the minute - [0,59] */ | 86 int tm_sec; /* seconds after the minute - [0,59] */ |
87 uInt tm_min; /* minutes after the hour - [0,59] */ | 87 int tm_min; /* minutes after the hour - [0,59] */ |
88 uInt tm_hour; /* hours since midnight - [0,23] */ | 88 int tm_hour; /* hours since midnight - [0,23] */ |
89 uInt tm_mday; /* day of the month - [1,31] */ | 89 int tm_mday; /* day of the month - [1,31] */ |
90 uInt tm_mon; /* months since January - [0,11] */ | 90 int tm_mon; /* months since January - [0,11] */ |
91 uInt tm_year; /* years - [1980..2044] */ | 91 int tm_year; /* years - [1980..2044] */ |
92 } tm_unz; | 92 } tm_unz; |
93 | 93 |
94 /* unz_global_info structure contain global data about the ZIPfile | 94 /* unz_global_info structure contain global data about the ZIPfile |
95 These data comes from the end of central dir */ | 95 These data comes from the end of central dir */ |
96 typedef struct unz_global_info64_s | 96 typedef struct unz_global_info64_s |
148 uLong external_fa; /* external file attributes 4 bytes */ | 148 uLong external_fa; /* external file attributes 4 bytes */ |
149 | 149 |
150 tm_unz tmu_date; | 150 tm_unz tmu_date; |
151 } unz_file_info; | 151 } unz_file_info; |
152 | 152 |
153 extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, | 153 extern int ZEXPORT unzStringFileNameCompare(const char* fileName1, |
154 const char* fileName2, | 154 const char* fileName2, |
155 int iCaseSensitivity)); | 155 int iCaseSensitivity); |
156 /* | 156 /* |
157 Compare two filename (fileName1,fileName2). | 157 Compare two filenames (fileName1,fileName2). |
158 If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) | 158 If iCaseSensitivity = 1, comparison is case sensitive (like strcmp) |
159 If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi | 159 If iCaseSensitivity = 2, comparison is not case sensitive (like strcmpi |
160 or strcasecmp) | 160 or strcasecmp) |
161 If iCaseSenisivity = 0, case sensitivity is defaut of your operating system | 161 If iCaseSensitivity = 0, case sensitivity is default of your operating system |
162 (like 1 on Unix, 2 on Windows) | 162 (like 1 on Unix, 2 on Windows) |
163 */ | 163 */ |
164 | 164 |
165 | 165 |
166 extern unzFile ZEXPORT unzOpen OF((const char *path)); | 166 extern unzFile ZEXPORT unzOpen(const char *path); |
167 extern unzFile ZEXPORT unzOpen64 OF((const void *path)); | 167 extern unzFile ZEXPORT unzOpen64(const void *path); |
168 /* | 168 /* |
169 Open a Zip file. path contain the full pathname (by example, | 169 Open a Zip file. path contain the full pathname (by example, |
170 on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer | 170 on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer |
171 "zlib/zlib113.zip". | 171 "zlib/zlib113.zip". |
172 If the zipfile cannot be opened (file don't exist or in not valid), the | 172 If the zipfile cannot be opened (file don't exist or in not valid), the |
179 is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char* | 179 is a pointer to a wide unicode string (LPCTSTR is LPCWSTR), so const char* |
180 does not describe the reality | 180 does not describe the reality |
181 */ | 181 */ |
182 | 182 |
183 | 183 |
184 extern unzFile ZEXPORT unzOpen2 OF((const char *path, | 184 extern unzFile ZEXPORT unzOpen2(const char *path, |
185 zlib_filefunc_def* pzlib_filefunc_def)); | 185 zlib_filefunc_def* pzlib_filefunc_def); |
186 /* | 186 /* |
187 Open a Zip file, like unzOpen, but provide a set of file low level API | 187 Open a Zip file, like unzOpen, but provide a set of file low level API |
188 for read/write the zip file (see ioapi.h) | 188 for read/write the zip file (see ioapi.h) |
189 */ | 189 */ |
190 | 190 |
191 extern unzFile ZEXPORT unzOpen2_64 OF((const void *path, | 191 extern unzFile ZEXPORT unzOpen2_64(const void *path, |
192 zlib_filefunc64_def* pzlib_filefunc_def)); | 192 zlib_filefunc64_def* pzlib_filefunc_def); |
193 /* | 193 /* |
194 Open a Zip file, like unz64Open, but provide a set of file low level API | 194 Open a Zip file, like unz64Open, but provide a set of file low level API |
195 for read/write the zip file (see ioapi.h) | 195 for read/write the zip file (see ioapi.h) |
196 */ | 196 */ |
197 | 197 |
198 extern int ZEXPORT unzClose OF((unzFile file)); | 198 extern int ZEXPORT unzClose(unzFile file); |
199 /* | 199 /* |
200 Close a ZipFile opened with unzOpen. | 200 Close a ZipFile opened with unzOpen. |
201 If there is files inside the .Zip opened with unzOpenCurrentFile (see later), | 201 If there is files inside the .Zip opened with unzOpenCurrentFile (see later), |
202 these files MUST be closed with unzCloseCurrentFile before call unzClose. | 202 these files MUST be closed with unzCloseCurrentFile before call unzClose. |
203 return UNZ_OK if there is no problem. */ | 203 return UNZ_OK if there is no problem. */ |
204 | 204 |
205 extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, | 205 extern int ZEXPORT unzGetGlobalInfo(unzFile file, |
206 unz_global_info *pglobal_info)); | 206 unz_global_info *pglobal_info); |
207 | 207 |
208 extern int ZEXPORT unzGetGlobalInfo64 OF((unzFile file, | 208 extern int ZEXPORT unzGetGlobalInfo64(unzFile file, |
209 unz_global_info64 *pglobal_info)); | 209 unz_global_info64 *pglobal_info); |
210 /* | 210 /* |
211 Write info about the ZipFile in the *pglobal_info structure. | 211 Write info about the ZipFile in the *pglobal_info structure. |
212 No preparation of the structure is needed | 212 No preparation of the structure is needed |
213 return UNZ_OK if there is no problem. */ | 213 return UNZ_OK if there is no problem. */ |
214 | 214 |
215 | 215 |
216 extern int ZEXPORT unzGetGlobalComment OF((unzFile file, | 216 extern int ZEXPORT unzGetGlobalComment(unzFile file, |
217 char *szComment, | 217 char *szComment, |
218 uLong uSizeBuf)); | 218 uLong uSizeBuf); |
219 /* | 219 /* |
220 Get the global comment string of the ZipFile, in the szComment buffer. | 220 Get the global comment string of the ZipFile, in the szComment buffer. |
221 uSizeBuf is the size of the szComment buffer. | 221 uSizeBuf is the size of the szComment buffer. |
222 return the number of byte copied or an error code <0 | 222 return the number of byte copied or an error code <0 |
223 */ | 223 */ |
224 | 224 |
225 | 225 |
226 /***************************************************************************/ | 226 /***************************************************************************/ |
227 /* Unzip package allow you browse the directory of the zipfile */ | 227 /* Unzip package allow you browse the directory of the zipfile */ |
228 | 228 |
229 extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); | 229 extern int ZEXPORT unzGoToFirstFile(unzFile file); |
230 /* | 230 /* |
231 Set the current file of the zipfile to the first file. | 231 Set the current file of the zipfile to the first file. |
232 return UNZ_OK if there is no problem | 232 return UNZ_OK if there is no problem |
233 */ | 233 */ |
234 | 234 |
235 extern int ZEXPORT unzGoToNextFile OF((unzFile file)); | 235 extern int ZEXPORT unzGoToNextFile(unzFile file); |
236 /* | 236 /* |
237 Set the current file of the zipfile to the next file. | 237 Set the current file of the zipfile to the next file. |
238 return UNZ_OK if there is no problem | 238 return UNZ_OK if there is no problem |
239 return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. | 239 return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. |
240 */ | 240 */ |
241 | 241 |
242 extern int ZEXPORT unzLocateFile OF((unzFile file, | 242 extern int ZEXPORT unzLocateFile(unzFile file, |
243 const char *szFileName, | 243 const char *szFileName, |
244 int iCaseSensitivity)); | 244 int iCaseSensitivity); |
245 /* | 245 /* |
246 Try locate the file szFileName in the zipfile. | 246 Try locate the file szFileName in the zipfile. |
247 For the iCaseSensitivity signification, see unzStringFileNameCompare | 247 For the iCaseSensitivity signification, see unzStringFileNameCompare |
248 | 248 |
249 return value : | 249 return value : |
283 unzFile file, | 283 unzFile file, |
284 const unz64_file_pos* file_pos); | 284 const unz64_file_pos* file_pos); |
285 | 285 |
286 /* ****************************************** */ | 286 /* ****************************************** */ |
287 | 287 |
288 extern int ZEXPORT unzGetCurrentFileInfo64 OF((unzFile file, | 288 extern int ZEXPORT unzGetCurrentFileInfo64(unzFile file, |
289 unz_file_info64 *pfile_info, | 289 unz_file_info64 *pfile_info, |
290 char *szFileName, | 290 char *szFileName, |
291 uLong fileNameBufferSize, | 291 uLong fileNameBufferSize, |
292 void *extraField, | 292 void *extraField, |
293 uLong extraFieldBufferSize, | 293 uLong extraFieldBufferSize, |
294 char *szComment, | 294 char *szComment, |
295 uLong commentBufferSize)); | 295 uLong commentBufferSize); |
296 | 296 |
297 extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, | 297 extern int ZEXPORT unzGetCurrentFileInfo(unzFile file, |
298 unz_file_info *pfile_info, | 298 unz_file_info *pfile_info, |
299 char *szFileName, | 299 char *szFileName, |
300 uLong fileNameBufferSize, | 300 uLong fileNameBufferSize, |
301 void *extraField, | 301 void *extraField, |
302 uLong extraFieldBufferSize, | 302 uLong extraFieldBufferSize, |
303 char *szComment, | 303 char *szComment, |
304 uLong commentBufferSize)); | 304 uLong commentBufferSize); |
305 /* | 305 /* |
306 Get Info about the current file | 306 Get Info about the current file |
307 if pfile_info!=NULL, the *pfile_info structure will contain somes info about | 307 if pfile_info!=NULL, the *pfile_info structure will contain some info about |
308 the current file | 308 the current file |
309 if szFileName!=NULL, the filemane string will be copied in szFileName | 309 if szFileName!=NULL, the filemane string will be copied in szFileName |
310 (fileNameBufferSize is the size of the buffer) | 310 (fileNameBufferSize is the size of the buffer) |
311 if extraField!=NULL, the extra field information will be copied in extraField | 311 if extraField!=NULL, the extra field information will be copied in extraField |
312 (extraFieldBufferSize is the size of the buffer). | 312 (extraFieldBufferSize is the size of the buffer). |
316 */ | 316 */ |
317 | 317 |
318 | 318 |
319 /** Addition for GDAL : START */ | 319 /** Addition for GDAL : START */ |
320 | 320 |
321 extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64 OF((unzFile file)); | 321 extern ZPOS64_T ZEXPORT unzGetCurrentFileZStreamPos64(unzFile file); |
322 | 322 |
323 /** Addition for GDAL : END */ | 323 /** Addition for GDAL : END */ |
324 | 324 |
325 | 325 |
326 /***************************************************************************/ | 326 /***************************************************************************/ |
327 /* for reading the content of the current zipfile, you can open it, read data | 327 /* for reading the content of the current zipfile, you can open it, read data |
328 from it, and close it (you can close it before reading all the file) | 328 from it, and close it (you can close it before reading all the file) |
329 */ | 329 */ |
330 | 330 |
331 extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); | 331 extern int ZEXPORT unzOpenCurrentFile(unzFile file); |
332 /* | 332 /* |
333 Open for reading data the current file in the zipfile. | 333 Open for reading data the current file in the zipfile. |
334 If there is no error, the return value is UNZ_OK. | 334 If there is no error, the return value is UNZ_OK. |
335 */ | 335 */ |
336 | 336 |
337 extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, | 337 extern int ZEXPORT unzOpenCurrentFilePassword(unzFile file, |
338 const char* password)); | 338 const char* password); |
339 /* | 339 /* |
340 Open for reading data the current file in the zipfile. | 340 Open for reading data the current file in the zipfile. |
341 password is a crypting password | 341 password is a crypting password |
342 If there is no error, the return value is UNZ_OK. | 342 If there is no error, the return value is UNZ_OK. |
343 */ | 343 */ |
344 | 344 |
345 extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, | 345 extern int ZEXPORT unzOpenCurrentFile2(unzFile file, |
346 int* method, | 346 int* method, |
347 int* level, | 347 int* level, |
348 int raw)); | 348 int raw); |
349 /* | 349 /* |
350 Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) | 350 Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) |
351 if raw==1 | 351 if raw==1 |
352 *method will receive method of compression, *level will receive level of | 352 *method will receive method of compression, *level will receive level of |
353 compression | 353 compression |
354 note : you can set level parameter as NULL (if you did not want known level, | 354 note : you can set level parameter as NULL (if you did not want known level, |
355 but you CANNOT set method parameter as NULL | 355 but you CANNOT set method parameter as NULL |
356 */ | 356 */ |
357 | 357 |
358 extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, | 358 extern int ZEXPORT unzOpenCurrentFile3(unzFile file, |
359 int* method, | 359 int* method, |
360 int* level, | 360 int* level, |
361 int raw, | 361 int raw, |
362 const char* password)); | 362 const char* password); |
363 /* | 363 /* |
364 Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) | 364 Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) |
365 if raw==1 | 365 if raw==1 |
366 *method will receive method of compression, *level will receive level of | 366 *method will receive method of compression, *level will receive level of |
367 compression | 367 compression |
368 note : you can set level parameter as NULL (if you did not want known level, | 368 note : you can set level parameter as NULL (if you did not want known level, |
369 but you CANNOT set method parameter as NULL | 369 but you CANNOT set method parameter as NULL |
370 */ | 370 */ |
371 | 371 |
372 | 372 |
373 extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); | 373 extern int ZEXPORT unzCloseCurrentFile(unzFile file); |
374 /* | 374 /* |
375 Close the file in zip opened with unzOpenCurrentFile | 375 Close the file in zip opened with unzOpenCurrentFile |
376 Return UNZ_CRCERROR if all the file was read but the CRC is not good | 376 Return UNZ_CRCERROR if all the file was read but the CRC is not good |
377 */ | 377 */ |
378 | 378 |
379 extern int ZEXPORT unzReadCurrentFile OF((unzFile file, | 379 extern int ZEXPORT unzReadCurrentFile(unzFile file, |
380 voidp buf, | 380 voidp buf, |
381 unsigned len)); | 381 unsigned len); |
382 /* | 382 /* |
383 Read bytes from the current file (opened by unzOpenCurrentFile) | 383 Read bytes from the current file (opened by unzOpenCurrentFile) |
384 buf contain buffer where data must be copied | 384 buf contain buffer where data must be copied |
385 len the size of buf. | 385 len the size of buf. |
386 | 386 |
387 return the number of byte copied if somes bytes are copied | 387 return the number of byte copied if some bytes are copied |
388 return 0 if the end of file was reached | 388 return 0 if the end of file was reached |
389 return <0 with error code if there is an error | 389 return <0 with error code if there is an error |
390 (UNZ_ERRNO for IO error, or zLib error for uncompress error) | 390 (UNZ_ERRNO for IO error, or zLib error for uncompress error) |
391 */ | 391 */ |
392 | 392 |
393 extern z_off_t ZEXPORT unztell OF((unzFile file)); | 393 extern z_off_t ZEXPORT unztell(unzFile file); |
394 | 394 |
395 extern ZPOS64_T ZEXPORT unztell64 OF((unzFile file)); | 395 extern ZPOS64_T ZEXPORT unztell64(unzFile file); |
396 /* | 396 /* |
397 Give the current position in uncompressed data | 397 Give the current position in uncompressed data |
398 */ | 398 */ |
399 | 399 |
400 extern int ZEXPORT unzeof OF((unzFile file)); | 400 extern int ZEXPORT unzeof(unzFile file); |
401 /* | 401 /* |
402 return 1 if the end of file was reached, 0 elsewhere | 402 return 1 if the end of file was reached, 0 elsewhere |
403 */ | 403 */ |
404 | 404 |
405 extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, | 405 extern int ZEXPORT unzGetLocalExtrafield(unzFile file, |
406 voidp buf, | 406 voidp buf, |
407 unsigned len)); | 407 unsigned len); |
408 /* | 408 /* |
409 Read extra field from the current file (opened by unzOpenCurrentFile) | 409 Read extra field from the current file (opened by unzOpenCurrentFile) |
410 This is the local-header version of the extra field (sometimes, there is | 410 This is the local-header version of the extra field (sometimes, there is |
411 more info in the local-header version than in the central-header) | 411 more info in the local-header version than in the central-header) |
412 | 412 |