1*86ee64e7SAndroid Build Coastguard WorkerFrom 409594639f15d825202971db7a275023e05772ff Mon Sep 17 00:00:00 2001 2*86ee64e7SAndroid Build Coastguard WorkerFrom: Adenilson Cavalcanti <[email protected]> 3*86ee64e7SAndroid Build Coastguard WorkerDate: Tue, 28 Apr 2020 10:48:01 -0700 4*86ee64e7SAndroid Build Coastguard WorkerSubject: [PATCH] Local Changes: - make C tests build as C++ code so we can 5*86ee64e7SAndroid Build Coastguard Worker use gtest. - use gtest EXPECT_TRUE instead of C assert. - replace C 6*86ee64e7SAndroid Build Coastguard Worker streams for C++ (portability issues). 7*86ee64e7SAndroid Build Coastguard Worker 8*86ee64e7SAndroid Build Coastguard Worker--- 9*86ee64e7SAndroid Build Coastguard Worker test/infcover.c | 167 ++++++++++++++++++++++++++---------------------- 10*86ee64e7SAndroid Build Coastguard Worker 1 file changed, 90 insertions(+), 77 deletions(-) 11*86ee64e7SAndroid Build Coastguard Worker 12*86ee64e7SAndroid Build Coastguard Workerdiff --git a/test/infcover.c b/test/infcover.c 13*86ee64e7SAndroid Build Coastguard Workerindex 2be0164..a8c51c7 100644 14*86ee64e7SAndroid Build Coastguard Worker--- a/test/infcover.c 15*86ee64e7SAndroid Build Coastguard Worker+++ b/test/infcover.c 16*86ee64e7SAndroid Build Coastguard Worker@@ -4,11 +4,12 @@ 17*86ee64e7SAndroid Build Coastguard Worker */ 18*86ee64e7SAndroid Build Coastguard Worker 19*86ee64e7SAndroid Build Coastguard Worker /* to use, do: ./configure --cover && make cover */ 20*86ee64e7SAndroid Build Coastguard Worker- 21*86ee64e7SAndroid Build Coastguard Worker+// clang-format off 22*86ee64e7SAndroid Build Coastguard Worker+#include "infcover.h" 23*86ee64e7SAndroid Build Coastguard Worker #include <stdio.h> 24*86ee64e7SAndroid Build Coastguard Worker #include <stdlib.h> 25*86ee64e7SAndroid Build Coastguard Worker #include <string.h> 26*86ee64e7SAndroid Build Coastguard Worker-#include <assert.h> 27*86ee64e7SAndroid Build Coastguard Worker+ 28*86ee64e7SAndroid Build Coastguard Worker #include "zlib.h" 29*86ee64e7SAndroid Build Coastguard Worker 30*86ee64e7SAndroid Build Coastguard Worker /* get definition of internal structure so we can mess with it (see pull()), 31*86ee64e7SAndroid Build Coastguard Worker@@ -17,8 +18,22 @@ 32*86ee64e7SAndroid Build Coastguard Worker #include "inftrees.h" 33*86ee64e7SAndroid Build Coastguard Worker #include "inflate.h" 34*86ee64e7SAndroid Build Coastguard Worker 35*86ee64e7SAndroid Build Coastguard Worker+/* XXX: use C++ streams instead of printf/fputs/etc due to portability 36*86ee64e7SAndroid Build Coastguard Worker+ * as type sizes can vary between platforms. 37*86ee64e7SAndroid Build Coastguard Worker+ */ 38*86ee64e7SAndroid Build Coastguard Worker+#include <iostream> 39*86ee64e7SAndroid Build Coastguard Worker #define local static 40*86ee64e7SAndroid Build Coastguard Worker 41*86ee64e7SAndroid Build Coastguard Worker+/* XXX: hacking C assert and plugging into GTest. */ 42*86ee64e7SAndroid Build Coastguard Worker+#include "gtest.h" 43*86ee64e7SAndroid Build Coastguard Worker+#if defined(assert) 44*86ee64e7SAndroid Build Coastguard Worker+#undef assert 45*86ee64e7SAndroid Build Coastguard Worker+#define assert EXPECT_TRUE 46*86ee64e7SAndroid Build Coastguard Worker+#endif 47*86ee64e7SAndroid Build Coastguard Worker+ 48*86ee64e7SAndroid Build Coastguard Worker+/* XXX: handle what is a reserved word in C++. */ 49*86ee64e7SAndroid Build Coastguard Worker+#define try try_f 50*86ee64e7SAndroid Build Coastguard Worker+ 51*86ee64e7SAndroid Build Coastguard Worker /* -- memory tracking routines -- */ 52*86ee64e7SAndroid Build Coastguard Worker 53*86ee64e7SAndroid Build Coastguard Worker /* 54*86ee64e7SAndroid Build Coastguard Worker@@ -72,7 +87,7 @@ local void *mem_alloc(void *mem, unsigned count, unsigned size) 55*86ee64e7SAndroid Build Coastguard Worker { 56*86ee64e7SAndroid Build Coastguard Worker void *ptr; 57*86ee64e7SAndroid Build Coastguard Worker struct mem_item *item; 58*86ee64e7SAndroid Build Coastguard Worker- struct mem_zone *zone = mem; 59*86ee64e7SAndroid Build Coastguard Worker+ struct mem_zone *zone = static_cast<struct mem_zone *>(mem); 60*86ee64e7SAndroid Build Coastguard Worker size_t len = count * (size_t)size; 61*86ee64e7SAndroid Build Coastguard Worker 62*86ee64e7SAndroid Build Coastguard Worker /* induced allocation failure */ 63*86ee64e7SAndroid Build Coastguard Worker@@ -87,7 +102,7 @@ local void *mem_alloc(void *mem, unsigned count, unsigned size) 64*86ee64e7SAndroid Build Coastguard Worker memset(ptr, 0xa5, len); 65*86ee64e7SAndroid Build Coastguard Worker 66*86ee64e7SAndroid Build Coastguard Worker /* create a new item for the list */ 67*86ee64e7SAndroid Build Coastguard Worker- item = malloc(sizeof(struct mem_item)); 68*86ee64e7SAndroid Build Coastguard Worker+ item = static_cast<struct mem_item *>(malloc(sizeof(struct mem_item))); 69*86ee64e7SAndroid Build Coastguard Worker if (item == NULL) { 70*86ee64e7SAndroid Build Coastguard Worker free(ptr); 71*86ee64e7SAndroid Build Coastguard Worker return NULL; 72*86ee64e7SAndroid Build Coastguard Worker@@ -112,7 +127,7 @@ local void *mem_alloc(void *mem, unsigned count, unsigned size) 73*86ee64e7SAndroid Build Coastguard Worker local void mem_free(void *mem, void *ptr) 74*86ee64e7SAndroid Build Coastguard Worker { 75*86ee64e7SAndroid Build Coastguard Worker struct mem_item *item, *next; 76*86ee64e7SAndroid Build Coastguard Worker- struct mem_zone *zone = mem; 77*86ee64e7SAndroid Build Coastguard Worker+ struct mem_zone *zone = static_cast<struct mem_zone *>(mem); 78*86ee64e7SAndroid Build Coastguard Worker 79*86ee64e7SAndroid Build Coastguard Worker /* if no zone, just do a free */ 80*86ee64e7SAndroid Build Coastguard Worker if (zone == NULL) { 81*86ee64e7SAndroid Build Coastguard Worker@@ -159,7 +174,7 @@ local void mem_setup(z_stream *strm) 82*86ee64e7SAndroid Build Coastguard Worker { 83*86ee64e7SAndroid Build Coastguard Worker struct mem_zone *zone; 84*86ee64e7SAndroid Build Coastguard Worker 85*86ee64e7SAndroid Build Coastguard Worker- zone = malloc(sizeof(struct mem_zone)); 86*86ee64e7SAndroid Build Coastguard Worker+ zone = static_cast<struct mem_zone *>(malloc(sizeof(struct mem_zone))); 87*86ee64e7SAndroid Build Coastguard Worker assert(zone != NULL); 88*86ee64e7SAndroid Build Coastguard Worker zone->first = NULL; 89*86ee64e7SAndroid Build Coastguard Worker zone->total = 0; 90*86ee64e7SAndroid Build Coastguard Worker@@ -175,33 +190,33 @@ local void mem_setup(z_stream *strm) 91*86ee64e7SAndroid Build Coastguard Worker /* set a limit on the total memory allocation, or 0 to remove the limit */ 92*86ee64e7SAndroid Build Coastguard Worker local void mem_limit(z_stream *strm, size_t limit) 93*86ee64e7SAndroid Build Coastguard Worker { 94*86ee64e7SAndroid Build Coastguard Worker- struct mem_zone *zone = strm->opaque; 95*86ee64e7SAndroid Build Coastguard Worker+ struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque); 96*86ee64e7SAndroid Build Coastguard Worker 97*86ee64e7SAndroid Build Coastguard Worker zone->limit = limit; 98*86ee64e7SAndroid Build Coastguard Worker } 99*86ee64e7SAndroid Build Coastguard Worker 100*86ee64e7SAndroid Build Coastguard Worker /* show the current total requested allocations in bytes */ 101*86ee64e7SAndroid Build Coastguard Worker-local void mem_used(z_stream *strm, char *prefix) 102*86ee64e7SAndroid Build Coastguard Worker+local void mem_used(z_stream *strm, const char *prefix) 103*86ee64e7SAndroid Build Coastguard Worker { 104*86ee64e7SAndroid Build Coastguard Worker- struct mem_zone *zone = strm->opaque; 105*86ee64e7SAndroid Build Coastguard Worker+ struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque); 106*86ee64e7SAndroid Build Coastguard Worker 107*86ee64e7SAndroid Build Coastguard Worker- fprintf(stderr, "%s: %lu allocated\n", prefix, zone->total); 108*86ee64e7SAndroid Build Coastguard Worker+ std::cout << prefix << ": " << zone->total << " allocated" << std::endl; 109*86ee64e7SAndroid Build Coastguard Worker } 110*86ee64e7SAndroid Build Coastguard Worker 111*86ee64e7SAndroid Build Coastguard Worker /* show the high water allocation in bytes */ 112*86ee64e7SAndroid Build Coastguard Worker-local void mem_high(z_stream *strm, char *prefix) 113*86ee64e7SAndroid Build Coastguard Worker+local void mem_high(z_stream *strm, const char *prefix) 114*86ee64e7SAndroid Build Coastguard Worker { 115*86ee64e7SAndroid Build Coastguard Worker- struct mem_zone *zone = strm->opaque; 116*86ee64e7SAndroid Build Coastguard Worker+ struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque); 117*86ee64e7SAndroid Build Coastguard Worker 118*86ee64e7SAndroid Build Coastguard Worker- fprintf(stderr, "%s: %lu high water mark\n", prefix, zone->highwater); 119*86ee64e7SAndroid Build Coastguard Worker+ std::cout << prefix << ": " << zone->highwater << " high water mark" << std::endl; 120*86ee64e7SAndroid Build Coastguard Worker } 121*86ee64e7SAndroid Build Coastguard Worker 122*86ee64e7SAndroid Build Coastguard Worker /* release the memory allocation zone -- if there are any surprises, notify */ 123*86ee64e7SAndroid Build Coastguard Worker-local void mem_done(z_stream *strm, char *prefix) 124*86ee64e7SAndroid Build Coastguard Worker+local void mem_done(z_stream *strm, const char *prefix) 125*86ee64e7SAndroid Build Coastguard Worker { 126*86ee64e7SAndroid Build Coastguard Worker int count = 0; 127*86ee64e7SAndroid Build Coastguard Worker struct mem_item *item, *next; 128*86ee64e7SAndroid Build Coastguard Worker- struct mem_zone *zone = strm->opaque; 129*86ee64e7SAndroid Build Coastguard Worker+ struct mem_zone *zone = static_cast<struct mem_zone *>(strm->opaque); 130*86ee64e7SAndroid Build Coastguard Worker 131*86ee64e7SAndroid Build Coastguard Worker /* show high water mark */ 132*86ee64e7SAndroid Build Coastguard Worker mem_high(strm, prefix); 133*86ee64e7SAndroid Build Coastguard Worker@@ -218,13 +233,20 @@ local void mem_done(z_stream *strm, char *prefix) 134*86ee64e7SAndroid Build Coastguard Worker 135*86ee64e7SAndroid Build Coastguard Worker /* issue alerts about anything unexpected */ 136*86ee64e7SAndroid Build Coastguard Worker if (count || zone->total) 137*86ee64e7SAndroid Build Coastguard Worker- fprintf(stderr, "** %s: %lu bytes in %d blocks not freed\n", 138*86ee64e7SAndroid Build Coastguard Worker- prefix, zone->total, count); 139*86ee64e7SAndroid Build Coastguard Worker+ std::cout << "** " << prefix << ": " 140*86ee64e7SAndroid Build Coastguard Worker+ << zone->total << " bytes in " 141*86ee64e7SAndroid Build Coastguard Worker+ << count << " blocks not freed" 142*86ee64e7SAndroid Build Coastguard Worker+ << std::endl; 143*86ee64e7SAndroid Build Coastguard Worker+ 144*86ee64e7SAndroid Build Coastguard Worker if (zone->notlifo) 145*86ee64e7SAndroid Build Coastguard Worker- fprintf(stderr, "** %s: %d frees not LIFO\n", prefix, zone->notlifo); 146*86ee64e7SAndroid Build Coastguard Worker+ std::cout << "** " << prefix << ": " 147*86ee64e7SAndroid Build Coastguard Worker+ << zone->notlifo << " frees not LIFO" 148*86ee64e7SAndroid Build Coastguard Worker+ << std::endl; 149*86ee64e7SAndroid Build Coastguard Worker+ 150*86ee64e7SAndroid Build Coastguard Worker if (zone->rogue) 151*86ee64e7SAndroid Build Coastguard Worker- fprintf(stderr, "** %s: %d frees not recognized\n", 152*86ee64e7SAndroid Build Coastguard Worker- prefix, zone->rogue); 153*86ee64e7SAndroid Build Coastguard Worker+ std::cout << "** " << prefix << ": " 154*86ee64e7SAndroid Build Coastguard Worker+ << zone->rogue << " frees not recognized" 155*86ee64e7SAndroid Build Coastguard Worker+ << std::endl; 156*86ee64e7SAndroid Build Coastguard Worker 157*86ee64e7SAndroid Build Coastguard Worker /* free the zone and delete from the stream */ 158*86ee64e7SAndroid Build Coastguard Worker free(zone); 159*86ee64e7SAndroid Build Coastguard Worker@@ -247,7 +269,7 @@ local unsigned char *h2b(const char *hex, unsigned *len) 160*86ee64e7SAndroid Build Coastguard Worker unsigned char *in, *re; 161*86ee64e7SAndroid Build Coastguard Worker unsigned next, val; 162*86ee64e7SAndroid Build Coastguard Worker 163*86ee64e7SAndroid Build Coastguard Worker- in = malloc((strlen(hex) + 1) >> 1); 164*86ee64e7SAndroid Build Coastguard Worker+ in = static_cast<unsigned char *>(malloc((strlen(hex) + 1) >> 1)); 165*86ee64e7SAndroid Build Coastguard Worker if (in == NULL) 166*86ee64e7SAndroid Build Coastguard Worker return NULL; 167*86ee64e7SAndroid Build Coastguard Worker next = 0; 168*86ee64e7SAndroid Build Coastguard Worker@@ -268,7 +290,7 @@ local unsigned char *h2b(const char *hex, unsigned *len) 169*86ee64e7SAndroid Build Coastguard Worker } while (*hex++); /* go through the loop with the terminating null */ 170*86ee64e7SAndroid Build Coastguard Worker if (len != NULL) 171*86ee64e7SAndroid Build Coastguard Worker *len = next; 172*86ee64e7SAndroid Build Coastguard Worker- re = realloc(in, next); 173*86ee64e7SAndroid Build Coastguard Worker+ re = static_cast<unsigned char *>(realloc(in, next)); 174*86ee64e7SAndroid Build Coastguard Worker return re == NULL ? in : re; 175*86ee64e7SAndroid Build Coastguard Worker } 176*86ee64e7SAndroid Build Coastguard Worker 177*86ee64e7SAndroid Build Coastguard Worker@@ -281,7 +303,7 @@ local unsigned char *h2b(const char *hex, unsigned *len) 178*86ee64e7SAndroid Build Coastguard Worker header information is collected with inflateGetHeader(). If a zlib stream 179*86ee64e7SAndroid Build Coastguard Worker is looking for a dictionary, then an empty dictionary is provided. 180*86ee64e7SAndroid Build Coastguard Worker inflate() is run until all of the input data is consumed. */ 181*86ee64e7SAndroid Build Coastguard Worker-local void inf(char *hex, char *what, unsigned step, int win, unsigned len, 182*86ee64e7SAndroid Build Coastguard Worker+local void inf(const char *hex, const char *what, unsigned step, int win, unsigned len, 183*86ee64e7SAndroid Build Coastguard Worker int err) 184*86ee64e7SAndroid Build Coastguard Worker { 185*86ee64e7SAndroid Build Coastguard Worker int ret; 186*86ee64e7SAndroid Build Coastguard Worker@@ -298,7 +320,7 @@ local void inf(char *hex, char *what, unsigned step, int win, unsigned len, 187*86ee64e7SAndroid Build Coastguard Worker mem_done(&strm, what); 188*86ee64e7SAndroid Build Coastguard Worker return; 189*86ee64e7SAndroid Build Coastguard Worker } 190*86ee64e7SAndroid Build Coastguard Worker- out = malloc(len); assert(out != NULL); 191*86ee64e7SAndroid Build Coastguard Worker+ out = static_cast<unsigned char *>(malloc(len)); assert(out != NULL); 192*86ee64e7SAndroid Build Coastguard Worker if (win == 47) { 193*86ee64e7SAndroid Build Coastguard Worker head.extra = out; 194*86ee64e7SAndroid Build Coastguard Worker head.extra_max = len; 195*86ee64e7SAndroid Build Coastguard Worker@@ -347,7 +369,7 @@ local void inf(char *hex, char *what, unsigned step, int win, unsigned len, 196*86ee64e7SAndroid Build Coastguard Worker } 197*86ee64e7SAndroid Build Coastguard Worker 198*86ee64e7SAndroid Build Coastguard Worker /* cover all of the lines in inflate.c up to inflate() */ 199*86ee64e7SAndroid Build Coastguard Worker-local void cover_support(void) 200*86ee64e7SAndroid Build Coastguard Worker+void cover_support(void) 201*86ee64e7SAndroid Build Coastguard Worker { 202*86ee64e7SAndroid Build Coastguard Worker int ret; 203*86ee64e7SAndroid Build Coastguard Worker z_stream strm; 204*86ee64e7SAndroid Build Coastguard Worker@@ -381,11 +403,11 @@ local void cover_support(void) 205*86ee64e7SAndroid Build Coastguard Worker strm.next_in = Z_NULL; 206*86ee64e7SAndroid Build Coastguard Worker ret = inflateInit(&strm); assert(ret == Z_OK); 207*86ee64e7SAndroid Build Coastguard Worker ret = inflateEnd(&strm); assert(ret == Z_OK); 208*86ee64e7SAndroid Build Coastguard Worker- fputs("inflate built-in memory routines\n", stderr); 209*86ee64e7SAndroid Build Coastguard Worker+ std::cout << "inflate built-in memory routines" << std::endl;; 210*86ee64e7SAndroid Build Coastguard Worker } 211*86ee64e7SAndroid Build Coastguard Worker 212*86ee64e7SAndroid Build Coastguard Worker /* cover all inflate() header and trailer cases and code after inflate() */ 213*86ee64e7SAndroid Build Coastguard Worker-local void cover_wrap(void) 214*86ee64e7SAndroid Build Coastguard Worker+void cover_wrap(void) 215*86ee64e7SAndroid Build Coastguard Worker { 216*86ee64e7SAndroid Build Coastguard Worker int ret; 217*86ee64e7SAndroid Build Coastguard Worker z_stream strm, copy; 218*86ee64e7SAndroid Build Coastguard Worker@@ -394,7 +416,7 @@ local void cover_wrap(void) 219*86ee64e7SAndroid Build Coastguard Worker ret = inflate(Z_NULL, 0); assert(ret == Z_STREAM_ERROR); 220*86ee64e7SAndroid Build Coastguard Worker ret = inflateEnd(Z_NULL); assert(ret == Z_STREAM_ERROR); 221*86ee64e7SAndroid Build Coastguard Worker ret = inflateCopy(Z_NULL, Z_NULL); assert(ret == Z_STREAM_ERROR); 222*86ee64e7SAndroid Build Coastguard Worker- fputs("inflate bad parameters\n", stderr); 223*86ee64e7SAndroid Build Coastguard Worker+ std::cout << "inflate bad parameters" << std::endl; 224*86ee64e7SAndroid Build Coastguard Worker 225*86ee64e7SAndroid Build Coastguard Worker inf("1f 8b 0 0", "bad gzip method", 0, 31, 0, Z_DATA_ERROR); 226*86ee64e7SAndroid Build Coastguard Worker inf("1f 8b 8 80", "bad gzip flags", 0, 31, 0, Z_DATA_ERROR); 227*86ee64e7SAndroid Build Coastguard Worker@@ -415,9 +437,9 @@ local void cover_wrap(void) 228*86ee64e7SAndroid Build Coastguard Worker strm.next_in = Z_NULL; 229*86ee64e7SAndroid Build Coastguard Worker ret = inflateInit2(&strm, -8); 230*86ee64e7SAndroid Build Coastguard Worker strm.avail_in = 2; 231*86ee64e7SAndroid Build Coastguard Worker- strm.next_in = (void *)"\x63"; 232*86ee64e7SAndroid Build Coastguard Worker+ strm.next_in = (Bytef *)"\x63"; 233*86ee64e7SAndroid Build Coastguard Worker strm.avail_out = 1; 234*86ee64e7SAndroid Build Coastguard Worker- strm.next_out = (void *)&ret; 235*86ee64e7SAndroid Build Coastguard Worker+ strm.next_out = (Bytef *)&ret; 236*86ee64e7SAndroid Build Coastguard Worker mem_limit(&strm, 1); 237*86ee64e7SAndroid Build Coastguard Worker ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR); 238*86ee64e7SAndroid Build Coastguard Worker ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_MEM_ERROR); 239*86ee64e7SAndroid Build Coastguard Worker@@ -428,11 +450,11 @@ local void cover_wrap(void) 240*86ee64e7SAndroid Build Coastguard Worker mem_limit(&strm, (sizeof(struct inflate_state) << 1) + 256); 241*86ee64e7SAndroid Build Coastguard Worker ret = inflatePrime(&strm, 16, 0); assert(ret == Z_OK); 242*86ee64e7SAndroid Build Coastguard Worker strm.avail_in = 2; 243*86ee64e7SAndroid Build Coastguard Worker- strm.next_in = (void *)"\x80"; 244*86ee64e7SAndroid Build Coastguard Worker+ strm.next_in = (Bytef *)"\x80"; 245*86ee64e7SAndroid Build Coastguard Worker ret = inflateSync(&strm); assert(ret == Z_DATA_ERROR); 246*86ee64e7SAndroid Build Coastguard Worker ret = inflate(&strm, Z_NO_FLUSH); assert(ret == Z_STREAM_ERROR); 247*86ee64e7SAndroid Build Coastguard Worker strm.avail_in = 4; 248*86ee64e7SAndroid Build Coastguard Worker- strm.next_in = (void *)"\0\0\xff\xff"; 249*86ee64e7SAndroid Build Coastguard Worker+ strm.next_in = (Bytef *)"\0\0\xff\xff"; 250*86ee64e7SAndroid Build Coastguard Worker ret = inflateSync(&strm); assert(ret == Z_OK); 251*86ee64e7SAndroid Build Coastguard Worker (void)inflateSyncPoint(&strm); 252*86ee64e7SAndroid Build Coastguard Worker ret = inflateCopy(©, &strm); assert(ret == Z_MEM_ERROR); 253*86ee64e7SAndroid Build Coastguard Worker@@ -454,7 +476,7 @@ local unsigned pull(void *desc, unsigned char **buf) 254*86ee64e7SAndroid Build Coastguard Worker next = 0; 255*86ee64e7SAndroid Build Coastguard Worker return 0; /* no input (already provided at next_in) */ 256*86ee64e7SAndroid Build Coastguard Worker } 257*86ee64e7SAndroid Build Coastguard Worker- state = (void *)((z_stream *)desc)->state; 258*86ee64e7SAndroid Build Coastguard Worker+ state = reinterpret_cast<struct inflate_state *>(((z_stream *)desc)->state); 259*86ee64e7SAndroid Build Coastguard Worker if (state != Z_NULL) 260*86ee64e7SAndroid Build Coastguard Worker state->mode = SYNC; /* force an otherwise impossible situation */ 261*86ee64e7SAndroid Build Coastguard Worker return next < sizeof(dat) ? (*buf = dat + next++, 1) : 0; 262*86ee64e7SAndroid Build Coastguard Worker@@ -467,7 +489,7 @@ local int push(void *desc, unsigned char *buf, unsigned len) 263*86ee64e7SAndroid Build Coastguard Worker } 264*86ee64e7SAndroid Build Coastguard Worker 265*86ee64e7SAndroid Build Coastguard Worker /* cover inflateBack() up to common deflate data cases and after those */ 266*86ee64e7SAndroid Build Coastguard Worker-local void cover_back(void) 267*86ee64e7SAndroid Build Coastguard Worker+void cover_back(void) 268*86ee64e7SAndroid Build Coastguard Worker { 269*86ee64e7SAndroid Build Coastguard Worker int ret; 270*86ee64e7SAndroid Build Coastguard Worker z_stream strm; 271*86ee64e7SAndroid Build Coastguard Worker@@ -479,17 +501,17 @@ local void cover_back(void) 272*86ee64e7SAndroid Build Coastguard Worker ret = inflateBack(Z_NULL, Z_NULL, Z_NULL, Z_NULL, Z_NULL); 273*86ee64e7SAndroid Build Coastguard Worker assert(ret == Z_STREAM_ERROR); 274*86ee64e7SAndroid Build Coastguard Worker ret = inflateBackEnd(Z_NULL); assert(ret == Z_STREAM_ERROR); 275*86ee64e7SAndroid Build Coastguard Worker- fputs("inflateBack bad parameters\n", stderr); 276*86ee64e7SAndroid Build Coastguard Worker+ std::cout << "inflateBack bad parameters" << std::endl;; 277*86ee64e7SAndroid Build Coastguard Worker 278*86ee64e7SAndroid Build Coastguard Worker mem_setup(&strm); 279*86ee64e7SAndroid Build Coastguard Worker ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK); 280*86ee64e7SAndroid Build Coastguard Worker strm.avail_in = 2; 281*86ee64e7SAndroid Build Coastguard Worker- strm.next_in = (void *)"\x03"; 282*86ee64e7SAndroid Build Coastguard Worker+ strm.next_in = (Bytef *)"\x03"; 283*86ee64e7SAndroid Build Coastguard Worker ret = inflateBack(&strm, pull, Z_NULL, push, Z_NULL); 284*86ee64e7SAndroid Build Coastguard Worker assert(ret == Z_STREAM_END); 285*86ee64e7SAndroid Build Coastguard Worker /* force output error */ 286*86ee64e7SAndroid Build Coastguard Worker strm.avail_in = 3; 287*86ee64e7SAndroid Build Coastguard Worker- strm.next_in = (void *)"\x63\x00"; 288*86ee64e7SAndroid Build Coastguard Worker+ strm.next_in = (Bytef *)"\x63\x00"; 289*86ee64e7SAndroid Build Coastguard Worker ret = inflateBack(&strm, pull, Z_NULL, push, &strm); 290*86ee64e7SAndroid Build Coastguard Worker assert(ret == Z_BUF_ERROR); 291*86ee64e7SAndroid Build Coastguard Worker /* force mode error by mucking with state */ 292*86ee64e7SAndroid Build Coastguard Worker@@ -500,11 +522,11 @@ local void cover_back(void) 293*86ee64e7SAndroid Build Coastguard Worker 294*86ee64e7SAndroid Build Coastguard Worker ret = inflateBackInit(&strm, 15, win); assert(ret == Z_OK); 295*86ee64e7SAndroid Build Coastguard Worker ret = inflateBackEnd(&strm); assert(ret == Z_OK); 296*86ee64e7SAndroid Build Coastguard Worker- fputs("inflateBack built-in memory routines\n", stderr); 297*86ee64e7SAndroid Build Coastguard Worker+ std::cout << "inflateBack built-in memory routines" << std::endl;; 298*86ee64e7SAndroid Build Coastguard Worker } 299*86ee64e7SAndroid Build Coastguard Worker 300*86ee64e7SAndroid Build Coastguard Worker /* do a raw inflate of data in hexadecimal with both inflate and inflateBack */ 301*86ee64e7SAndroid Build Coastguard Worker-local int try(char *hex, char *id, int err) 302*86ee64e7SAndroid Build Coastguard Worker+local int try(const char *hex, const char *id, int err) 303*86ee64e7SAndroid Build Coastguard Worker { 304*86ee64e7SAndroid Build Coastguard Worker int ret; 305*86ee64e7SAndroid Build Coastguard Worker unsigned len, size; 306*86ee64e7SAndroid Build Coastguard Worker@@ -518,11 +540,11 @@ local int try(char *hex, char *id, int err) 307*86ee64e7SAndroid Build Coastguard Worker 308*86ee64e7SAndroid Build Coastguard Worker /* allocate work areas */ 309*86ee64e7SAndroid Build Coastguard Worker size = len << 3; 310*86ee64e7SAndroid Build Coastguard Worker- out = malloc(size); 311*86ee64e7SAndroid Build Coastguard Worker+ out = static_cast<unsigned char *>(malloc(size)); 312*86ee64e7SAndroid Build Coastguard Worker assert(out != NULL); 313*86ee64e7SAndroid Build Coastguard Worker- win = malloc(32768); 314*86ee64e7SAndroid Build Coastguard Worker+ win = static_cast<unsigned char *>(malloc(32768)); 315*86ee64e7SAndroid Build Coastguard Worker assert(win != NULL); 316*86ee64e7SAndroid Build Coastguard Worker- prefix = malloc(strlen(id) + 6); 317*86ee64e7SAndroid Build Coastguard Worker+ prefix = static_cast<char *>(malloc(strlen(id) + 6)); 318*86ee64e7SAndroid Build Coastguard Worker assert(prefix != NULL); 319*86ee64e7SAndroid Build Coastguard Worker 320*86ee64e7SAndroid Build Coastguard Worker /* first with inflate */ 321*86ee64e7SAndroid Build Coastguard Worker@@ -578,7 +600,7 @@ local int try(char *hex, char *id, int err) 322*86ee64e7SAndroid Build Coastguard Worker } 323*86ee64e7SAndroid Build Coastguard Worker 324*86ee64e7SAndroid Build Coastguard Worker /* cover deflate data cases in both inflate() and inflateBack() */ 325*86ee64e7SAndroid Build Coastguard Worker-local void cover_inflate(void) 326*86ee64e7SAndroid Build Coastguard Worker+void cover_inflate(void) 327*86ee64e7SAndroid Build Coastguard Worker { 328*86ee64e7SAndroid Build Coastguard Worker try("0 0 0 0 0", "invalid stored block lengths", 1); 329*86ee64e7SAndroid Build Coastguard Worker try("3 0", "fixed", 0); 330*86ee64e7SAndroid Build Coastguard Worker@@ -613,32 +635,33 @@ local void cover_inflate(void) 331*86ee64e7SAndroid Build Coastguard Worker inf("63 18 5 40 c 0", "window wrap", 3, -8, 300, Z_OK); 332*86ee64e7SAndroid Build Coastguard Worker } 333*86ee64e7SAndroid Build Coastguard Worker 334*86ee64e7SAndroid Build Coastguard Worker+/* XXX(cavalcantii): fix linking error due inflate_table. */ 335*86ee64e7SAndroid Build Coastguard Worker /* cover remaining lines in inftrees.c */ 336*86ee64e7SAndroid Build Coastguard Worker-local void cover_trees(void) 337*86ee64e7SAndroid Build Coastguard Worker-{ 338*86ee64e7SAndroid Build Coastguard Worker- int ret; 339*86ee64e7SAndroid Build Coastguard Worker- unsigned bits; 340*86ee64e7SAndroid Build Coastguard Worker- unsigned short lens[16], work[16]; 341*86ee64e7SAndroid Build Coastguard Worker- code *next, table[ENOUGH_DISTS]; 342*86ee64e7SAndroid Build Coastguard Worker- 343*86ee64e7SAndroid Build Coastguard Worker- /* we need to call inflate_table() directly in order to manifest not- 344*86ee64e7SAndroid Build Coastguard Worker- enough errors, since zlib insures that enough is always enough */ 345*86ee64e7SAndroid Build Coastguard Worker- for (bits = 0; bits < 15; bits++) 346*86ee64e7SAndroid Build Coastguard Worker- lens[bits] = (unsigned short)(bits + 1); 347*86ee64e7SAndroid Build Coastguard Worker- lens[15] = 15; 348*86ee64e7SAndroid Build Coastguard Worker- next = table; 349*86ee64e7SAndroid Build Coastguard Worker- bits = 15; 350*86ee64e7SAndroid Build Coastguard Worker- ret = inflate_table(DISTS, lens, 16, &next, &bits, work); 351*86ee64e7SAndroid Build Coastguard Worker- assert(ret == 1); 352*86ee64e7SAndroid Build Coastguard Worker- next = table; 353*86ee64e7SAndroid Build Coastguard Worker- bits = 1; 354*86ee64e7SAndroid Build Coastguard Worker- ret = inflate_table(DISTS, lens, 16, &next, &bits, work); 355*86ee64e7SAndroid Build Coastguard Worker- assert(ret == 1); 356*86ee64e7SAndroid Build Coastguard Worker- fputs("inflate_table not enough errors\n", stderr); 357*86ee64e7SAndroid Build Coastguard Worker-} 358*86ee64e7SAndroid Build Coastguard Worker+/* void cover_trees(void) */ 359*86ee64e7SAndroid Build Coastguard Worker+/* { */ 360*86ee64e7SAndroid Build Coastguard Worker+/* int ret; */ 361*86ee64e7SAndroid Build Coastguard Worker+/* unsigned bits; */ 362*86ee64e7SAndroid Build Coastguard Worker+/* unsigned short lens[16], work[16]; */ 363*86ee64e7SAndroid Build Coastguard Worker+/* code *next, table[ENOUGH_DISTS]; */ 364*86ee64e7SAndroid Build Coastguard Worker+ 365*86ee64e7SAndroid Build Coastguard Worker+/* /\* we need to call inflate_table() directly in order to manifest not- */ 366*86ee64e7SAndroid Build Coastguard Worker+/* enough errors, since zlib insures that enough is always enough *\/ */ 367*86ee64e7SAndroid Build Coastguard Worker+/* for (bits = 0; bits < 15; bits++) */ 368*86ee64e7SAndroid Build Coastguard Worker+/* lens[bits] = (unsigned short)(bits + 1); */ 369*86ee64e7SAndroid Build Coastguard Worker+/* lens[15] = 15; */ 370*86ee64e7SAndroid Build Coastguard Worker+/* next = table; */ 371*86ee64e7SAndroid Build Coastguard Worker+/* bits = 15; */ 372*86ee64e7SAndroid Build Coastguard Worker+/* ret = inflate_table(DISTS, lens, 16, &next, &bits, work); */ 373*86ee64e7SAndroid Build Coastguard Worker+/* assert(ret == 1); */ 374*86ee64e7SAndroid Build Coastguard Worker+/* next = table; */ 375*86ee64e7SAndroid Build Coastguard Worker+/* bits = 1; */ 376*86ee64e7SAndroid Build Coastguard Worker+/* ret = inflate_table(DISTS, lens, 16, &next, &bits, work); */ 377*86ee64e7SAndroid Build Coastguard Worker+/* assert(ret == 1); */ 378*86ee64e7SAndroid Build Coastguard Worker+/* fputs("inflate_table not enough errors\n", stderr); */ 379*86ee64e7SAndroid Build Coastguard Worker+/* } */ 380*86ee64e7SAndroid Build Coastguard Worker 381*86ee64e7SAndroid Build Coastguard Worker /* cover remaining inffast.c decoding and window copying */ 382*86ee64e7SAndroid Build Coastguard Worker-local void cover_fast(void) 383*86ee64e7SAndroid Build Coastguard Worker+void cover_fast(void) 384*86ee64e7SAndroid Build Coastguard Worker { 385*86ee64e7SAndroid Build Coastguard Worker inf("e5 e0 81 ad 6d cb b2 2c c9 01 1e 59 63 ae 7d ee fb 4d fd b5 35 41 68" 386*86ee64e7SAndroid Build Coastguard Worker " ff 7f 0f 0 0 0", "fast length extra bits", 0, -8, 258, Z_DATA_ERROR); 387*86ee64e7SAndroid Build Coastguard Worker@@ -658,14 +681,4 @@ local void cover_fast(void) 388*86ee64e7SAndroid Build Coastguard Worker Z_STREAM_END); 389*86ee64e7SAndroid Build Coastguard Worker } 390*86ee64e7SAndroid Build Coastguard Worker 391*86ee64e7SAndroid Build Coastguard Worker-int main(void) 392*86ee64e7SAndroid Build Coastguard Worker-{ 393*86ee64e7SAndroid Build Coastguard Worker- fprintf(stderr, "%s\n", zlibVersion()); 394*86ee64e7SAndroid Build Coastguard Worker- cover_support(); 395*86ee64e7SAndroid Build Coastguard Worker- cover_wrap(); 396*86ee64e7SAndroid Build Coastguard Worker- cover_back(); 397*86ee64e7SAndroid Build Coastguard Worker- cover_inflate(); 398*86ee64e7SAndroid Build Coastguard Worker- cover_trees(); 399*86ee64e7SAndroid Build Coastguard Worker- cover_fast(); 400*86ee64e7SAndroid Build Coastguard Worker- return 0; 401*86ee64e7SAndroid Build Coastguard Worker-} 402*86ee64e7SAndroid Build Coastguard Worker+// clang-format on 403*86ee64e7SAndroid Build Coastguard Worker-- 404*86ee64e7SAndroid Build Coastguard Worker2.21.1 (Apple Git-122.3) 405*86ee64e7SAndroid Build Coastguard Worker 406