/src/zstd/lib/legacy/zstd_legacy.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) Meta Platforms, Inc. and affiliates. |
3 | | * All rights reserved. |
4 | | * |
5 | | * This source code is licensed under both the BSD-style license (found in the |
6 | | * LICENSE file in the root directory of this source tree) and the GPLv2 (found |
7 | | * in the COPYING file in the root directory of this source tree). |
8 | | * You may select, at your option, one of the above-listed licenses. |
9 | | */ |
10 | | |
11 | | #ifndef ZSTD_LEGACY_H |
12 | | #define ZSTD_LEGACY_H |
13 | | |
14 | | #if defined (__cplusplus) |
15 | | extern "C" { |
16 | | #endif |
17 | | |
18 | | /* ************************************* |
19 | | * Includes |
20 | | ***************************************/ |
21 | | #include "../common/mem.h" /* MEM_STATIC */ |
22 | | #include "../common/error_private.h" /* ERROR */ |
23 | | #include "../common/zstd_internal.h" /* ZSTD_inBuffer, ZSTD_outBuffer, ZSTD_frameSizeInfo */ |
24 | | |
25 | | #if !defined (ZSTD_LEGACY_SUPPORT) || (ZSTD_LEGACY_SUPPORT == 0) |
26 | | # undef ZSTD_LEGACY_SUPPORT |
27 | | # define ZSTD_LEGACY_SUPPORT 8 |
28 | | #endif |
29 | | |
30 | | #if (ZSTD_LEGACY_SUPPORT <= 1) |
31 | | # include "zstd_v01.h" |
32 | | #endif |
33 | | #if (ZSTD_LEGACY_SUPPORT <= 2) |
34 | | # include "zstd_v02.h" |
35 | | #endif |
36 | | #if (ZSTD_LEGACY_SUPPORT <= 3) |
37 | | # include "zstd_v03.h" |
38 | | #endif |
39 | | #if (ZSTD_LEGACY_SUPPORT <= 4) |
40 | | # include "zstd_v04.h" |
41 | | #endif |
42 | | #if (ZSTD_LEGACY_SUPPORT <= 5) |
43 | | # include "zstd_v05.h" |
44 | | #endif |
45 | | #if (ZSTD_LEGACY_SUPPORT <= 6) |
46 | | # include "zstd_v06.h" |
47 | | #endif |
48 | | #if (ZSTD_LEGACY_SUPPORT <= 7) |
49 | | # include "zstd_v07.h" |
50 | | #endif |
51 | | |
52 | | /** ZSTD_isLegacy() : |
53 | | @return : > 0 if supported by legacy decoder. 0 otherwise. |
54 | | return value is the version. |
55 | | */ |
56 | | MEM_STATIC unsigned ZSTD_isLegacy(const void* src, size_t srcSize) |
57 | 33.6k | { |
58 | 33.6k | U32 magicNumberLE; |
59 | 33.6k | if (srcSize<4) return 0; |
60 | 33.6k | magicNumberLE = MEM_readLE32(src); |
61 | 33.6k | switch(magicNumberLE) |
62 | 33.6k | { |
63 | | #if (ZSTD_LEGACY_SUPPORT <= 1) |
64 | | case ZSTDv01_magicNumberLE:return 1; |
65 | | #endif |
66 | | #if (ZSTD_LEGACY_SUPPORT <= 2) |
67 | | case ZSTDv02_magicNumber : return 2; |
68 | | #endif |
69 | | #if (ZSTD_LEGACY_SUPPORT <= 3) |
70 | | case ZSTDv03_magicNumber : return 3; |
71 | | #endif |
72 | | #if (ZSTD_LEGACY_SUPPORT <= 4) |
73 | | case ZSTDv04_magicNumber : return 4; |
74 | | #endif |
75 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) |
76 | 10.4k | case ZSTDv05_MAGICNUMBER : return 5; |
77 | 0 | #endif |
78 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) |
79 | 7.10k | case ZSTDv06_MAGICNUMBER : return 6; |
80 | 0 | #endif |
81 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) |
82 | 7.92k | case ZSTDv07_MAGICNUMBER : return 7; |
83 | 0 | #endif |
84 | 8.13k | default : return 0; |
85 | 33.6k | } |
86 | 33.6k | } zstd_decompress.c:ZSTD_isLegacy Line | Count | Source | 57 | 33.6k | { | 58 | 33.6k | U32 magicNumberLE; | 59 | 33.6k | if (srcSize<4) return 0; | 60 | 33.6k | magicNumberLE = MEM_readLE32(src); | 61 | 33.6k | switch(magicNumberLE) | 62 | 33.6k | { | 63 | | #if (ZSTD_LEGACY_SUPPORT <= 1) | 64 | | case ZSTDv01_magicNumberLE:return 1; | 65 | | #endif | 66 | | #if (ZSTD_LEGACY_SUPPORT <= 2) | 67 | | case ZSTDv02_magicNumber : return 2; | 68 | | #endif | 69 | | #if (ZSTD_LEGACY_SUPPORT <= 3) | 70 | | case ZSTDv03_magicNumber : return 3; | 71 | | #endif | 72 | | #if (ZSTD_LEGACY_SUPPORT <= 4) | 73 | | case ZSTDv04_magicNumber : return 4; | 74 | | #endif | 75 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) | 76 | 10.4k | case ZSTDv05_MAGICNUMBER : return 5; | 77 | 0 | #endif | 78 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) | 79 | 7.10k | case ZSTDv06_MAGICNUMBER : return 6; | 80 | 0 | #endif | 81 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) | 82 | 7.92k | case ZSTDv07_MAGICNUMBER : return 7; | 83 | 0 | #endif | 84 | 8.13k | default : return 0; | 85 | 33.6k | } | 86 | 33.6k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_isLegacy |
87 | | |
88 | | |
89 | | MEM_STATIC unsigned long long ZSTD_getDecompressedSize_legacy(const void* src, size_t srcSize) |
90 | 0 | { |
91 | 0 | U32 const version = ZSTD_isLegacy(src, srcSize); |
92 | 0 | if (version < 5) return 0; /* no decompressed size in frame header, or not a legacy format */ |
93 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) |
94 | 0 | if (version==5) { |
95 | 0 | ZSTDv05_parameters fParams; |
96 | 0 | size_t const frResult = ZSTDv05_getFrameParams(&fParams, src, srcSize); |
97 | 0 | if (frResult != 0) return 0; |
98 | 0 | return fParams.srcSize; |
99 | 0 | } |
100 | 0 | #endif |
101 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) |
102 | 0 | if (version==6) { |
103 | 0 | ZSTDv06_frameParams fParams; |
104 | 0 | size_t const frResult = ZSTDv06_getFrameParams(&fParams, src, srcSize); |
105 | 0 | if (frResult != 0) return 0; |
106 | 0 | return fParams.frameContentSize; |
107 | 0 | } |
108 | 0 | #endif |
109 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) |
110 | 0 | if (version==7) { |
111 | 0 | ZSTDv07_frameParams fParams; |
112 | 0 | size_t const frResult = ZSTDv07_getFrameParams(&fParams, src, srcSize); |
113 | 0 | if (frResult != 0) return 0; |
114 | 0 | return fParams.frameContentSize; |
115 | 0 | } |
116 | 0 | #endif |
117 | 0 | return 0; /* should not be possible */ |
118 | 0 | } Unexecuted instantiation: zstd_decompress.c:ZSTD_getDecompressedSize_legacy Unexecuted instantiation: zstd_ddict.c:ZSTD_getDecompressedSize_legacy |
119 | | |
120 | | |
121 | | MEM_STATIC size_t ZSTD_decompressLegacy( |
122 | | void* dst, size_t dstCapacity, |
123 | | const void* src, size_t compressedSize, |
124 | | const void* dict,size_t dictSize) |
125 | 0 | { |
126 | 0 | U32 const version = ZSTD_isLegacy(src, compressedSize); |
127 | 0 | char x; |
128 | | /* Avoid passing NULL to legacy decoding. */ |
129 | 0 | if (dst == NULL) { |
130 | 0 | assert(dstCapacity == 0); |
131 | 0 | dst = &x; |
132 | 0 | } |
133 | 0 | if (src == NULL) { |
134 | 0 | assert(compressedSize == 0); |
135 | 0 | src = &x; |
136 | 0 | } |
137 | 0 | if (dict == NULL) { |
138 | 0 | assert(dictSize == 0); |
139 | 0 | dict = &x; |
140 | 0 | } |
141 | 0 | (void)dst; (void)dstCapacity; (void)dict; (void)dictSize; /* unused when ZSTD_LEGACY_SUPPORT >= 8 */ |
142 | 0 | switch(version) |
143 | 0 | { |
144 | | #if (ZSTD_LEGACY_SUPPORT <= 1) |
145 | | case 1 : |
146 | | return ZSTDv01_decompress(dst, dstCapacity, src, compressedSize); |
147 | | #endif |
148 | | #if (ZSTD_LEGACY_SUPPORT <= 2) |
149 | | case 2 : |
150 | | return ZSTDv02_decompress(dst, dstCapacity, src, compressedSize); |
151 | | #endif |
152 | | #if (ZSTD_LEGACY_SUPPORT <= 3) |
153 | | case 3 : |
154 | | return ZSTDv03_decompress(dst, dstCapacity, src, compressedSize); |
155 | | #endif |
156 | | #if (ZSTD_LEGACY_SUPPORT <= 4) |
157 | | case 4 : |
158 | | return ZSTDv04_decompress(dst, dstCapacity, src, compressedSize); |
159 | | #endif |
160 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) |
161 | 0 | case 5 : |
162 | 0 | { size_t result; |
163 | 0 | ZSTDv05_DCtx* const zd = ZSTDv05_createDCtx(); |
164 | 0 | if (zd==NULL) return ERROR(memory_allocation); |
165 | 0 | result = ZSTDv05_decompress_usingDict(zd, dst, dstCapacity, src, compressedSize, dict, dictSize); |
166 | 0 | ZSTDv05_freeDCtx(zd); |
167 | 0 | return result; |
168 | 0 | } |
169 | 0 | #endif |
170 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) |
171 | 0 | case 6 : |
172 | 0 | { size_t result; |
173 | 0 | ZSTDv06_DCtx* const zd = ZSTDv06_createDCtx(); |
174 | 0 | if (zd==NULL) return ERROR(memory_allocation); |
175 | 0 | result = ZSTDv06_decompress_usingDict(zd, dst, dstCapacity, src, compressedSize, dict, dictSize); |
176 | 0 | ZSTDv06_freeDCtx(zd); |
177 | 0 | return result; |
178 | 0 | } |
179 | 0 | #endif |
180 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) |
181 | 0 | case 7 : |
182 | 0 | { size_t result; |
183 | 0 | ZSTDv07_DCtx* const zd = ZSTDv07_createDCtx(); |
184 | 0 | if (zd==NULL) return ERROR(memory_allocation); |
185 | 0 | result = ZSTDv07_decompress_usingDict(zd, dst, dstCapacity, src, compressedSize, dict, dictSize); |
186 | 0 | ZSTDv07_freeDCtx(zd); |
187 | 0 | return result; |
188 | 0 | } |
189 | 0 | #endif |
190 | 0 | default : |
191 | 0 | return ERROR(prefix_unknown); |
192 | 0 | } |
193 | 0 | } Unexecuted instantiation: zstd_decompress.c:ZSTD_decompressLegacy Unexecuted instantiation: zstd_ddict.c:ZSTD_decompressLegacy |
194 | | |
195 | | MEM_STATIC ZSTD_frameSizeInfo ZSTD_findFrameSizeInfoLegacy(const void *src, size_t srcSize) |
196 | 0 | { |
197 | 0 | ZSTD_frameSizeInfo frameSizeInfo; |
198 | 0 | U32 const version = ZSTD_isLegacy(src, srcSize); |
199 | 0 | switch(version) |
200 | 0 | { |
201 | | #if (ZSTD_LEGACY_SUPPORT <= 1) |
202 | | case 1 : |
203 | | ZSTDv01_findFrameSizeInfoLegacy(src, srcSize, |
204 | | &frameSizeInfo.compressedSize, |
205 | | &frameSizeInfo.decompressedBound); |
206 | | break; |
207 | | #endif |
208 | | #if (ZSTD_LEGACY_SUPPORT <= 2) |
209 | | case 2 : |
210 | | ZSTDv02_findFrameSizeInfoLegacy(src, srcSize, |
211 | | &frameSizeInfo.compressedSize, |
212 | | &frameSizeInfo.decompressedBound); |
213 | | break; |
214 | | #endif |
215 | | #if (ZSTD_LEGACY_SUPPORT <= 3) |
216 | | case 3 : |
217 | | ZSTDv03_findFrameSizeInfoLegacy(src, srcSize, |
218 | | &frameSizeInfo.compressedSize, |
219 | | &frameSizeInfo.decompressedBound); |
220 | | break; |
221 | | #endif |
222 | | #if (ZSTD_LEGACY_SUPPORT <= 4) |
223 | | case 4 : |
224 | | ZSTDv04_findFrameSizeInfoLegacy(src, srcSize, |
225 | | &frameSizeInfo.compressedSize, |
226 | | &frameSizeInfo.decompressedBound); |
227 | | break; |
228 | | #endif |
229 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) |
230 | 0 | case 5 : |
231 | 0 | ZSTDv05_findFrameSizeInfoLegacy(src, srcSize, |
232 | 0 | &frameSizeInfo.compressedSize, |
233 | 0 | &frameSizeInfo.decompressedBound); |
234 | 0 | break; |
235 | 0 | #endif |
236 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) |
237 | 0 | case 6 : |
238 | 0 | ZSTDv06_findFrameSizeInfoLegacy(src, srcSize, |
239 | 0 | &frameSizeInfo.compressedSize, |
240 | 0 | &frameSizeInfo.decompressedBound); |
241 | 0 | break; |
242 | 0 | #endif |
243 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) |
244 | 0 | case 7 : |
245 | 0 | ZSTDv07_findFrameSizeInfoLegacy(src, srcSize, |
246 | 0 | &frameSizeInfo.compressedSize, |
247 | 0 | &frameSizeInfo.decompressedBound); |
248 | 0 | break; |
249 | 0 | #endif |
250 | 0 | default : |
251 | 0 | frameSizeInfo.compressedSize = ERROR(prefix_unknown); |
252 | 0 | frameSizeInfo.decompressedBound = ZSTD_CONTENTSIZE_ERROR; |
253 | 0 | break; |
254 | 0 | } |
255 | 0 | if (!ZSTD_isError(frameSizeInfo.compressedSize) && frameSizeInfo.compressedSize > srcSize) { |
256 | 0 | frameSizeInfo.compressedSize = ERROR(srcSize_wrong); |
257 | 0 | frameSizeInfo.decompressedBound = ZSTD_CONTENTSIZE_ERROR; |
258 | 0 | } |
259 | | /* In all cases, decompressedBound == nbBlocks * ZSTD_BLOCKSIZE_MAX. |
260 | | * So we can compute nbBlocks without having to change every function. |
261 | | */ |
262 | 0 | if (frameSizeInfo.decompressedBound != ZSTD_CONTENTSIZE_ERROR) { |
263 | 0 | assert((frameSizeInfo.decompressedBound & (ZSTD_BLOCKSIZE_MAX - 1)) == 0); |
264 | 0 | frameSizeInfo.nbBlocks = (size_t)(frameSizeInfo.decompressedBound / ZSTD_BLOCKSIZE_MAX); |
265 | 0 | } |
266 | 0 | return frameSizeInfo; |
267 | 0 | } Unexecuted instantiation: zstd_decompress.c:ZSTD_findFrameSizeInfoLegacy Unexecuted instantiation: zstd_ddict.c:ZSTD_findFrameSizeInfoLegacy |
268 | | |
269 | | MEM_STATIC size_t ZSTD_findFrameCompressedSizeLegacy(const void *src, size_t srcSize) |
270 | 0 | { |
271 | 0 | ZSTD_frameSizeInfo frameSizeInfo = ZSTD_findFrameSizeInfoLegacy(src, srcSize); |
272 | 0 | return frameSizeInfo.compressedSize; |
273 | 0 | } Unexecuted instantiation: zstd_decompress.c:ZSTD_findFrameCompressedSizeLegacy Unexecuted instantiation: zstd_ddict.c:ZSTD_findFrameCompressedSizeLegacy |
274 | | |
275 | | MEM_STATIC size_t ZSTD_freeLegacyStreamContext(void* legacyContext, U32 version) |
276 | 51.0k | { |
277 | 51.0k | switch(version) |
278 | 51.0k | { |
279 | 25.5k | default : |
280 | 25.5k | case 1 : |
281 | 25.5k | case 2 : |
282 | 25.5k | case 3 : |
283 | 25.5k | (void)legacyContext; |
284 | 25.5k | return ERROR(version_unsupported); |
285 | | #if (ZSTD_LEGACY_SUPPORT <= 4) |
286 | | case 4 : return ZBUFFv04_freeDCtx((ZBUFFv04_DCtx*)legacyContext); |
287 | | #endif |
288 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) |
289 | 10.4k | case 5 : return ZBUFFv05_freeDCtx((ZBUFFv05_DCtx*)legacyContext); |
290 | 0 | #endif |
291 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) |
292 | 7.10k | case 6 : return ZBUFFv06_freeDCtx((ZBUFFv06_DCtx*)legacyContext); |
293 | 0 | #endif |
294 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) |
295 | 7.92k | case 7 : return ZBUFFv07_freeDCtx((ZBUFFv07_DCtx*)legacyContext); |
296 | 51.0k | #endif |
297 | 51.0k | } |
298 | 51.0k | } zstd_decompress.c:ZSTD_freeLegacyStreamContext Line | Count | Source | 276 | 51.0k | { | 277 | 51.0k | switch(version) | 278 | 51.0k | { | 279 | 25.5k | default : | 280 | 25.5k | case 1 : | 281 | 25.5k | case 2 : | 282 | 25.5k | case 3 : | 283 | 25.5k | (void)legacyContext; | 284 | 25.5k | return ERROR(version_unsupported); | 285 | | #if (ZSTD_LEGACY_SUPPORT <= 4) | 286 | | case 4 : return ZBUFFv04_freeDCtx((ZBUFFv04_DCtx*)legacyContext); | 287 | | #endif | 288 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) | 289 | 10.4k | case 5 : return ZBUFFv05_freeDCtx((ZBUFFv05_DCtx*)legacyContext); | 290 | 0 | #endif | 291 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) | 292 | 7.10k | case 6 : return ZBUFFv06_freeDCtx((ZBUFFv06_DCtx*)legacyContext); | 293 | 0 | #endif | 294 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) | 295 | 7.92k | case 7 : return ZBUFFv07_freeDCtx((ZBUFFv07_DCtx*)legacyContext); | 296 | 51.0k | #endif | 297 | 51.0k | } | 298 | 51.0k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_freeLegacyStreamContext |
299 | | |
300 | | |
301 | | MEM_STATIC size_t ZSTD_initLegacyStream(void** legacyContext, U32 prevVersion, U32 newVersion, |
302 | | const void* dict, size_t dictSize) |
303 | 25.5k | { |
304 | 25.5k | char x; |
305 | | /* Avoid passing NULL to legacy decoding. */ |
306 | 25.5k | if (dict == NULL) { |
307 | 25.5k | assert(dictSize == 0); |
308 | 25.5k | dict = &x; |
309 | 25.5k | } |
310 | 25.5k | DEBUGLOG(5, "ZSTD_initLegacyStream for v0.%u", newVersion); |
311 | 25.5k | if (prevVersion != newVersion) ZSTD_freeLegacyStreamContext(*legacyContext, prevVersion); |
312 | 25.5k | switch(newVersion) |
313 | 25.5k | { |
314 | 0 | default : |
315 | 0 | case 1 : |
316 | 0 | case 2 : |
317 | 0 | case 3 : |
318 | 0 | (void)dict; (void)dictSize; |
319 | 0 | return 0; |
320 | | #if (ZSTD_LEGACY_SUPPORT <= 4) |
321 | | case 4 : |
322 | | { |
323 | | ZBUFFv04_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv04_createDCtx() : (ZBUFFv04_DCtx*)*legacyContext; |
324 | | if (dctx==NULL) return ERROR(memory_allocation); |
325 | | ZBUFFv04_decompressInit(dctx); |
326 | | ZBUFFv04_decompressWithDictionary(dctx, dict, dictSize); |
327 | | *legacyContext = dctx; |
328 | | return 0; |
329 | | } |
330 | | #endif |
331 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) |
332 | 10.4k | case 5 : |
333 | 10.4k | { |
334 | 10.4k | ZBUFFv05_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv05_createDCtx() : (ZBUFFv05_DCtx*)*legacyContext; |
335 | 10.4k | if (dctx==NULL) return ERROR(memory_allocation); |
336 | 10.4k | ZBUFFv05_decompressInitDictionary(dctx, dict, dictSize); |
337 | 10.4k | *legacyContext = dctx; |
338 | 10.4k | return 0; |
339 | 10.4k | } |
340 | 0 | #endif |
341 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) |
342 | 7.10k | case 6 : |
343 | 7.10k | { |
344 | 7.10k | ZBUFFv06_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv06_createDCtx() : (ZBUFFv06_DCtx*)*legacyContext; |
345 | 7.10k | if (dctx==NULL) return ERROR(memory_allocation); |
346 | 7.10k | ZBUFFv06_decompressInitDictionary(dctx, dict, dictSize); |
347 | 7.10k | *legacyContext = dctx; |
348 | 7.10k | return 0; |
349 | 7.10k | } |
350 | 0 | #endif |
351 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) |
352 | 7.92k | case 7 : |
353 | 7.92k | { |
354 | 7.92k | ZBUFFv07_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv07_createDCtx() : (ZBUFFv07_DCtx*)*legacyContext; |
355 | 7.92k | if (dctx==NULL) return ERROR(memory_allocation); |
356 | 7.92k | ZBUFFv07_decompressInitDictionary(dctx, dict, dictSize); |
357 | 7.92k | *legacyContext = dctx; |
358 | 7.92k | return 0; |
359 | 7.92k | } |
360 | 25.5k | #endif |
361 | 25.5k | } |
362 | 25.5k | } zstd_decompress.c:ZSTD_initLegacyStream Line | Count | Source | 303 | 25.5k | { | 304 | 25.5k | char x; | 305 | | /* Avoid passing NULL to legacy decoding. */ | 306 | 25.5k | if (dict == NULL) { | 307 | 25.5k | assert(dictSize == 0); | 308 | 25.5k | dict = &x; | 309 | 25.5k | } | 310 | 25.5k | DEBUGLOG(5, "ZSTD_initLegacyStream for v0.%u", newVersion); | 311 | 25.5k | if (prevVersion != newVersion) ZSTD_freeLegacyStreamContext(*legacyContext, prevVersion); | 312 | 25.5k | switch(newVersion) | 313 | 25.5k | { | 314 | 0 | default : | 315 | 0 | case 1 : | 316 | 0 | case 2 : | 317 | 0 | case 3 : | 318 | 0 | (void)dict; (void)dictSize; | 319 | 0 | return 0; | 320 | | #if (ZSTD_LEGACY_SUPPORT <= 4) | 321 | | case 4 : | 322 | | { | 323 | | ZBUFFv04_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv04_createDCtx() : (ZBUFFv04_DCtx*)*legacyContext; | 324 | | if (dctx==NULL) return ERROR(memory_allocation); | 325 | | ZBUFFv04_decompressInit(dctx); | 326 | | ZBUFFv04_decompressWithDictionary(dctx, dict, dictSize); | 327 | | *legacyContext = dctx; | 328 | | return 0; | 329 | | } | 330 | | #endif | 331 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) | 332 | 10.4k | case 5 : | 333 | 10.4k | { | 334 | 10.4k | ZBUFFv05_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv05_createDCtx() : (ZBUFFv05_DCtx*)*legacyContext; | 335 | 10.4k | if (dctx==NULL) return ERROR(memory_allocation); | 336 | 10.4k | ZBUFFv05_decompressInitDictionary(dctx, dict, dictSize); | 337 | 10.4k | *legacyContext = dctx; | 338 | 10.4k | return 0; | 339 | 10.4k | } | 340 | 0 | #endif | 341 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) | 342 | 7.10k | case 6 : | 343 | 7.10k | { | 344 | 7.10k | ZBUFFv06_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv06_createDCtx() : (ZBUFFv06_DCtx*)*legacyContext; | 345 | 7.10k | if (dctx==NULL) return ERROR(memory_allocation); | 346 | 7.10k | ZBUFFv06_decompressInitDictionary(dctx, dict, dictSize); | 347 | 7.10k | *legacyContext = dctx; | 348 | 7.10k | return 0; | 349 | 7.10k | } | 350 | 0 | #endif | 351 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) | 352 | 7.92k | case 7 : | 353 | 7.92k | { | 354 | 7.92k | ZBUFFv07_DCtx* dctx = (prevVersion != newVersion) ? ZBUFFv07_createDCtx() : (ZBUFFv07_DCtx*)*legacyContext; | 355 | 7.92k | if (dctx==NULL) return ERROR(memory_allocation); | 356 | 7.92k | ZBUFFv07_decompressInitDictionary(dctx, dict, dictSize); | 357 | 7.92k | *legacyContext = dctx; | 358 | 7.92k | return 0; | 359 | 7.92k | } | 360 | 25.5k | #endif | 361 | 25.5k | } | 362 | 25.5k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_initLegacyStream |
363 | | |
364 | | |
365 | | |
366 | | MEM_STATIC size_t ZSTD_decompressLegacyStream(void* legacyContext, U32 version, |
367 | | ZSTD_outBuffer* output, ZSTD_inBuffer* input) |
368 | 48.6k | { |
369 | 48.6k | static char x; |
370 | | /* Avoid passing NULL to legacy decoding. */ |
371 | 48.6k | if (output->dst == NULL) { |
372 | 0 | assert(output->size == 0); |
373 | 0 | output->dst = &x; |
374 | 0 | } |
375 | 48.6k | if (input->src == NULL) { |
376 | 0 | assert(input->size == 0); |
377 | 0 | input->src = &x; |
378 | 0 | } |
379 | 48.6k | DEBUGLOG(5, "ZSTD_decompressLegacyStream for v0.%u", version); |
380 | 48.6k | switch(version) |
381 | 48.6k | { |
382 | 0 | default : |
383 | 0 | case 1 : |
384 | 0 | case 2 : |
385 | 0 | case 3 : |
386 | 0 | (void)legacyContext; (void)output; (void)input; |
387 | 0 | return ERROR(version_unsupported); |
388 | | #if (ZSTD_LEGACY_SUPPORT <= 4) |
389 | | case 4 : |
390 | | { |
391 | | ZBUFFv04_DCtx* dctx = (ZBUFFv04_DCtx*) legacyContext; |
392 | | const void* src = (const char*)input->src + input->pos; |
393 | | size_t readSize = input->size - input->pos; |
394 | | void* dst = (char*)output->dst + output->pos; |
395 | | size_t decodedSize = output->size - output->pos; |
396 | | size_t const hintSize = ZBUFFv04_decompressContinue(dctx, dst, &decodedSize, src, &readSize); |
397 | | output->pos += decodedSize; |
398 | | input->pos += readSize; |
399 | | return hintSize; |
400 | | } |
401 | | #endif |
402 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) |
403 | 21.9k | case 5 : |
404 | 21.9k | { |
405 | 21.9k | ZBUFFv05_DCtx* dctx = (ZBUFFv05_DCtx*) legacyContext; |
406 | 21.9k | const void* src = (const char*)input->src + input->pos; |
407 | 21.9k | size_t readSize = input->size - input->pos; |
408 | 21.9k | void* dst = (char*)output->dst + output->pos; |
409 | 21.9k | size_t decodedSize = output->size - output->pos; |
410 | 21.9k | size_t const hintSize = ZBUFFv05_decompressContinue(dctx, dst, &decodedSize, src, &readSize); |
411 | 21.9k | output->pos += decodedSize; |
412 | 21.9k | input->pos += readSize; |
413 | 21.9k | return hintSize; |
414 | 0 | } |
415 | 0 | #endif |
416 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) |
417 | 12.2k | case 6 : |
418 | 12.2k | { |
419 | 12.2k | ZBUFFv06_DCtx* dctx = (ZBUFFv06_DCtx*) legacyContext; |
420 | 12.2k | const void* src = (const char*)input->src + input->pos; |
421 | 12.2k | size_t readSize = input->size - input->pos; |
422 | 12.2k | void* dst = (char*)output->dst + output->pos; |
423 | 12.2k | size_t decodedSize = output->size - output->pos; |
424 | 12.2k | size_t const hintSize = ZBUFFv06_decompressContinue(dctx, dst, &decodedSize, src, &readSize); |
425 | 12.2k | output->pos += decodedSize; |
426 | 12.2k | input->pos += readSize; |
427 | 12.2k | return hintSize; |
428 | 0 | } |
429 | 0 | #endif |
430 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) |
431 | 14.4k | case 7 : |
432 | 14.4k | { |
433 | 14.4k | ZBUFFv07_DCtx* dctx = (ZBUFFv07_DCtx*) legacyContext; |
434 | 14.4k | const void* src = (const char*)input->src + input->pos; |
435 | 14.4k | size_t readSize = input->size - input->pos; |
436 | 14.4k | void* dst = (char*)output->dst + output->pos; |
437 | 14.4k | size_t decodedSize = output->size - output->pos; |
438 | 14.4k | size_t const hintSize = ZBUFFv07_decompressContinue(dctx, dst, &decodedSize, src, &readSize); |
439 | 14.4k | output->pos += decodedSize; |
440 | 14.4k | input->pos += readSize; |
441 | 14.4k | return hintSize; |
442 | 0 | } |
443 | 48.6k | #endif |
444 | 48.6k | } |
445 | 48.6k | } zstd_decompress.c:ZSTD_decompressLegacyStream Line | Count | Source | 368 | 48.6k | { | 369 | 48.6k | static char x; | 370 | | /* Avoid passing NULL to legacy decoding. */ | 371 | 48.6k | if (output->dst == NULL) { | 372 | 0 | assert(output->size == 0); | 373 | 0 | output->dst = &x; | 374 | 0 | } | 375 | 48.6k | if (input->src == NULL) { | 376 | 0 | assert(input->size == 0); | 377 | 0 | input->src = &x; | 378 | 0 | } | 379 | 48.6k | DEBUGLOG(5, "ZSTD_decompressLegacyStream for v0.%u", version); | 380 | 48.6k | switch(version) | 381 | 48.6k | { | 382 | 0 | default : | 383 | 0 | case 1 : | 384 | 0 | case 2 : | 385 | 0 | case 3 : | 386 | 0 | (void)legacyContext; (void)output; (void)input; | 387 | 0 | return ERROR(version_unsupported); | 388 | | #if (ZSTD_LEGACY_SUPPORT <= 4) | 389 | | case 4 : | 390 | | { | 391 | | ZBUFFv04_DCtx* dctx = (ZBUFFv04_DCtx*) legacyContext; | 392 | | const void* src = (const char*)input->src + input->pos; | 393 | | size_t readSize = input->size - input->pos; | 394 | | void* dst = (char*)output->dst + output->pos; | 395 | | size_t decodedSize = output->size - output->pos; | 396 | | size_t const hintSize = ZBUFFv04_decompressContinue(dctx, dst, &decodedSize, src, &readSize); | 397 | | output->pos += decodedSize; | 398 | | input->pos += readSize; | 399 | | return hintSize; | 400 | | } | 401 | | #endif | 402 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 5) | 403 | 21.9k | case 5 : | 404 | 21.9k | { | 405 | 21.9k | ZBUFFv05_DCtx* dctx = (ZBUFFv05_DCtx*) legacyContext; | 406 | 21.9k | const void* src = (const char*)input->src + input->pos; | 407 | 21.9k | size_t readSize = input->size - input->pos; | 408 | 21.9k | void* dst = (char*)output->dst + output->pos; | 409 | 21.9k | size_t decodedSize = output->size - output->pos; | 410 | 21.9k | size_t const hintSize = ZBUFFv05_decompressContinue(dctx, dst, &decodedSize, src, &readSize); | 411 | 21.9k | output->pos += decodedSize; | 412 | 21.9k | input->pos += readSize; | 413 | 21.9k | return hintSize; | 414 | 0 | } | 415 | 0 | #endif | 416 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 6) | 417 | 12.2k | case 6 : | 418 | 12.2k | { | 419 | 12.2k | ZBUFFv06_DCtx* dctx = (ZBUFFv06_DCtx*) legacyContext; | 420 | 12.2k | const void* src = (const char*)input->src + input->pos; | 421 | 12.2k | size_t readSize = input->size - input->pos; | 422 | 12.2k | void* dst = (char*)output->dst + output->pos; | 423 | 12.2k | size_t decodedSize = output->size - output->pos; | 424 | 12.2k | size_t const hintSize = ZBUFFv06_decompressContinue(dctx, dst, &decodedSize, src, &readSize); | 425 | 12.2k | output->pos += decodedSize; | 426 | 12.2k | input->pos += readSize; | 427 | 12.2k | return hintSize; | 428 | 0 | } | 429 | 0 | #endif | 430 | 0 | #if (ZSTD_LEGACY_SUPPORT <= 7) | 431 | 14.4k | case 7 : | 432 | 14.4k | { | 433 | 14.4k | ZBUFFv07_DCtx* dctx = (ZBUFFv07_DCtx*) legacyContext; | 434 | 14.4k | const void* src = (const char*)input->src + input->pos; | 435 | 14.4k | size_t readSize = input->size - input->pos; | 436 | 14.4k | void* dst = (char*)output->dst + output->pos; | 437 | 14.4k | size_t decodedSize = output->size - output->pos; | 438 | 14.4k | size_t const hintSize = ZBUFFv07_decompressContinue(dctx, dst, &decodedSize, src, &readSize); | 439 | 14.4k | output->pos += decodedSize; | 440 | 14.4k | input->pos += readSize; | 441 | 14.4k | return hintSize; | 442 | 0 | } | 443 | 48.6k | #endif | 444 | 48.6k | } | 445 | 48.6k | } |
Unexecuted instantiation: zstd_ddict.c:ZSTD_decompressLegacyStream |
446 | | |
447 | | |
448 | | #if defined (__cplusplus) |
449 | | } |
450 | | #endif |
451 | | |
452 | | #endif /* ZSTD_LEGACY_H */ |