github.com/fraugster/parquet-go@v0.12.0/deltabp_decoder_test.go (about) 1 package goparquet 2 3 import "testing" 4 5 func TestFuzzCrashDeltaBitPackDecoder64DivByZero(t *testing.T) { 6 data := []byte("PAR1\x15\x00\x15B\x15B,\x15\x02\x15\n\x15\x06\x15\x15\x02" + 7 "\x19\xf0)H!org.apache.impa" + 8 "la.ComplexTypesTbl\x15\f" + 9 "\x00\x15\x04%\x00\x18\x02id\x004\x02\x18\tint_ar" + 10 "ray\x15\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x00\x15" + 11 "\x02%\x02\x18\aelement\x005\x02\x18\x0fint" + 12 "_array_Array\x15\x02\x15\x06\x005\x04\x18" + 13 "\x04list\x15\x02\x005\x02\x18\aelement\x15" + 14 "\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x00\x15\x02%\x02\x18" + 15 "\aelement\x005\x02\x18\ain\x00\x00\x00\x01p" + 16 "\x15\x02\x15\x02\x005\x04\x18\x03map\x15\x04\x15\x04\x00\x15\f%" + 17 "\x00\x18\x03key%\x00\x00\x15\x02%\x02\x18\x05value" + 18 "\x005\x02\x18\rint_Map_Array\x15\x02" + 19 "\x15\x06\x005\x04\x18\x04list\x15\x02\x005\x02\x18\ael" + 20 "ement\x15\x02\x15\x02\x005\x04\x18\x03map\x15\x04\x15" + 21 "\x04\x00\x15\f%\x00\x18\x03key%\x00\x00\x15\x02%\x02\x18\x05" + 22 "value\x005\x02\x18\rnested_str" + 23 "uct\x15\b\x00\x15\x02%\x02\x18\x01A\x005\x02\x18\x01b\x15" + 24 "\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x00\x15\x02%\x02\x18" + 25 "\aelement\x005\x02\x18\x01C\x15\x02\x005\x02\x18" + 26 "\x01d\x15\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x005\x02" + 27 "\x18\aelement\x15\x02\x15\x06\x005\x04\x18\x04li" + 28 "st\x15\x02\x005\x02\x18\aelement\x15\x04\x00\x15" + 29 "\x02%\x02\x18\x01E\x00\x15\f%\x02\x18\x01F%\x00\x005\x02\x18" + 30 "\x01g\x15\x02\x15\x02\x005\x04\x18\x03map\x15\x04\x15\x04\x00\x15" + 31 "\f%\x00\x18\x03key%\x00\x005\x02\x18\x05value" + 32 "\x15\x02\x005\x02\x18\x01H\x15\x02\x005\x02\x18\x01i\x15\x02\x15\x06" + 33 "\x005\x04\x18\x04list\x15\x02\x00\x15\n%\x02\x18\ael" + 34 "ement\x00\x16\x0e\x19\x1c\x19\xdc&\b\x1c\x15\x04\x195\b" + 35 "\x00\x06\x19\x18\x02id\x15\x00\x16\x0e\x16\xce\x01\x16\xce\x01&\b<" + 36 "\x18\b\a\x00\x00\x00\x00\x00\x00\x00\x18\b\x01\x00\x00\x00\x00\x00\x00\x00" + 37 "\x16\x00\x00\x00\x00&\xd6\x01\x1c\x15\x02\x19%\x06\x04\x198\tin" + 38 "t_array\x04list\aelement" + 39 "\x15\x00\x16\x1c\x16\x9c\x01\x16\x9c\x01&\xd6\x01<\x18\x04\x03\x00\x00\x00" + 40 "\x18\x04\x01\x00\x00\x00\x16\x10\x00\x00\x00&\xf2\x02\x1c\x15\x02\x19%\x06" + 41 "\x04\x19X\x0fint_array_Array\x04" + 42 "list\aelement\x04list\ael" + 43 "ement\x15\x00\x16(\x16\xce\x01\x16\xce\x01&\xf2\x02<\x18" + 44 "\x04\x06\x00\x00\x00\x18\x04\x01\x00\x00\x00\x16\x14\x00\x00\x00&\xc0\x04\x1c" + 45 "\x15\f\x19%\x06\x04\x198\aint_map\x03map" + 46 "\x03key\x15\x00\x16\x14\x16\xa0\x01\x16\xa0\x01&\xc0\x04<\x18\x02" + 47 "k3\x18\x02k1\x16\b\x00\x00\x00&\xe0\x05\x1c\x15\x02\x19%\x00" + 48 "\x06\x198\aint_map\x03map\x05valu" + 49 "e\x15\x00\x16\x14\x16z\x16z&\xe0\x05<\x18\x04d\x00\x00\x00\x18" + 50 "\x04\x01\x00\x00\x00\x16\x0e\x00\x00\x00&\xda\x06\x1c\x15\f\x19%\x06\x04" + 51 "\x19X\rint_Map_Array\x04lis" + 52 "t\aelement\x03map\x03key\x15\x00\x16" + 53 "\x16\x16\x9a\x01\x16\x9a\x01&\xda\x06<\x18\x02k3\x18\x02k1\x16" + 54 "\x10\x00\x00\x00&\xf4\a\x1c\x15\x02\x19%\x06\x04\x19X\rint" + 55 "_Map_Array\x04list\aele-" + 56 "ent\x03map\x05value\x15\x00\x16\x16\x16\x90\x01" + 57 "\x16\x90\x01&\xf4\a<\x18\x04\x01\x00\x00\x00\x18\x04\x01\x00\x00\x00\x16" + 58 "\x12\x00\x00\x00&\x84\t\x1c\x15\x02\x195\b\x00\x06\x19(\rne" + 59 "sted_struct\x01A\x15\x00\x16\x0e\x16`\x16" + 60 "`&\x84\t<\x18\x04\a\x00\x00\x00\x18\x04\x01\x00\x00\x00\x16\n\x00" + 61 "\x00\x00&\xe4\t\x1c\x15\x02\x19%\x00\x06\x19H\rneste" + 62 "d_struct\x01b\x04list\aelem" + 63 "ent\x15\x00\x16\x12\x16~\x16~&\xe4\t<\x18\x04\x03\x00\x00" + 64 "\x00\x18\x04\x01\x00\x00\x00\x16\f\x00\x00\x00&\xe2\n\x1c\x15\x02\x19%" + 65 "\x06\x04\x19\x88\rnested_struct\x01C" + 66 "\x01d\x04list\aelement\x04list" + 67 "\ael\xecment\x01E\x15\x00\x16&\x16\xb4\x01\x16\xb4\x01" + 68 "&\xe2\n<\x18\x04\v\x00\x00\x00\x18\x04\xf6\xff\xff\xff\x16\x1a\x00\x00" + 69 "\x00&\x96\f\x1c\x15\f\x19%\x06\x04\x19\x88\rnested" + 70 "_struct\x01C\x01d\x04list\aele" + 71 "ment\x04list\aelement\x01F\x15" + 72 "\x00\x16&\x16\xba\x01\x16\xba\x01&\x96\f<\x18\x01c\x18\x03aa" + 73 "a\x16\x1a\x00\x00\x00&\xd0\r\x1c\x15\f\x19%\x06\x04\x19H\rn" + 74 "ested_struct\x01g\x03map\x03k" + 75 "ey\x15\x00\x16\x16\x16\xca\x01\x16\xca\x01&\xd0\r<\x18\x02g5" + 76 "\x18\x03foo\x16\b\x00\x00\x00&\x9a\x0f\x1c\x15\n\x19%\x06\x04" + 77 "\x19\x88\rnested_struct\x01g\x03m" + 78 "ap\x05value\x01H\x01i\x04list\ael" + 79 "ement\x15\x00\x16\x1a\x16\xd0\x01\x16\xd0\x01&\x9a\x0f<\x18" + 80 "\bffffff\n@\x18\b\x9a\x99\x99\x99\x99\x99\xf1?\x16" + 81 "\x12\x00\x00\x00\x16\xe2\x10\x16\x0e\x00\x19\x1c\x18\x13pa:que" + 82 "t.avro.schema\x18\xc0\t{\"ty" + 83 "pe\":\"record\",\"name\":" + 84 "\"ComplexTypesTbl\",\"n" + 85 "amespace\":\"org.apach" + 86 "e.impala\",\"fields\":[" + 87 "{\"name\":\"id\",\"type\":" + 88 "[\"null\",\"long\"]},{\"n" + 89 "ame\":\"int_array\",\"ty" + 90 "pe\":[\"null\",{\"type\":" + 91 "\"array\",\"ioems\":[\"nu" + 92 "ll\",\"int\"]}]},{\"name" + 93 "\":\"int_array_Array\"," + 94 "\"type\":[\"null\",{\"typ" + 95 "e\":\"array\",\"items\":[" + 96 "\"null\",{\"type\":\"arra" + 97 "y\",\"items\":[\"null\",\"" + 98 "int\"]}]}]},{\"name\":\"" + 99 "int_map\",\"type\":[\"nu" + 100 "ll\",{\"type\":\"map\",\"v" + 101 "alues\":[\"null\",\"int\"" + 102 "]}]},{\"na\xfbe\":\"int_Ma" + 103 "p_Array\",\"type\":[\"nu" + 104 "ll\",{\"type\":\"array\"," + 105 "\"items\":[\"null\",{\"ty" + 106 "pe\":\"map\",\"values\":[" + 107 "\"null\",\"int\"]}]}]},{" + 108 "\"name\":\"nested_struc" + 109 "t\",\"type\":[\"null\",{\"" + 110 "type\":\"record\",\"name" + 111 "\":\"r1\",\"fields\":[{\"n" + 112 "ame\":\"A\",\"type\":[ nu" + 113 "ll\",\"int\"]},{\"name\":" + 114 "\"b\",\"type\":[\"null\",{" + 115 "\"type\":\"array\",\"item" + 116 "s\":[\"nulc\",\"int\"]}]}" + 117 ",{\"name\":\"C\",\"type\":" + 118 "[\"null\",{\"type\":\"rec" + 119 "ord\",\"name\":\"r2\",\"fi" + 120 "elds\":[{\"name\":\"d\",\"" + 121 "type\":[\"null\",{\"type" + 122 "\":\"array\",\"items\":[\"" + 123 "null\",{\"type\":\"array" + 124 "\",\"items\":[\"null\",{\"" + 125 "type\":\"record\",\"name" + 126 "\":\"r3\",\"fields\":[{\"n" + 127 "ame\":\"E\",\"type\":[\"nu" + 128 "ll\",\"int\"]},{\"name\":" + 129 "\"F\",\"type\":[\"null\",\"" + 130 "string\"]}]}]}]}]}]}]" + 131 "},{\"name\":\"g\",\"type\"" + 132 ":[\"null\",{\"type\":\"ma" + 133 "p\",\"values\":[\"null\"," + 134 "{\"type\":\"record\",\"na" + 135 "me\":\"r4\",\"fields\":[{" + 136 "\"name\":\"H\",\"type\":[\"" + 137 "null\",{\"type\":\"recor" + 138 "d\",\"name\":\"r5\",\"fiel" + 139 "ds\":[{\"name\":\"i\",\"ty" + 140 "pe\":[\"nul\xef\xff\xff\xff\xff\xff\xff\xffe\":" + 141 "\"array\",\"items\":[\"nu" + 142 "ll\",\"double\"]}]}]}]}" + 143 "]}]}]}]}]}]}\x00\x18Iparqu" + 144 "et-mr version 1.8.0 " + 145 "(bui,d 0fda28af84b97" + 146 "46396014ad6a415b9059" + 147 "2a98b3b)\x00\xfb\n\x00\x00PAR1") 148 149 readAllData(t, data) 150 } 151 152 func TestFuzzCrashDeltaBitPackDecoder64LenOutOfRange(t *testing.T) { 153 data := []byte("PAR1\x15\x00\x15B\x15B,\x15\x02\x15\n\x15\x06\x15\x15\x02" + 154 "\x19\xfc)H!org.apache.impa" + 155 "la.ComplexTypesTbl\x15\f" + 156 "\x00\x15\x04%\x00\x18\x02id\x004\x02\x18\tint_ar" + 157 "ray\x15\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x00\x15" + 158 "\x02%\x02\x18\aelement\x005\x02\x18\x0fint" + 159 "_array_Array\x15\x02\x15\x06\x005\x04\x18" + 160 "\x04list\x15\x02\x005\x02\x18\aelement\x15" + 161 "\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x00\x15\x02%\x02\x18" + 162 "\aelement\x005\x02\x18\ain\xe0\x03map" + 163 "\x15\x02\x15\x02\x005\x04\x18\x03map\x15\x04\x15\x04\x00\x15\f%" + 164 "\x00\x18\x03key%\x00\x00\x15\x02%\x02\x18\x05value" + 165 "\x005\x02\x18\rint_Map_Array\x15\x02" + 166 "\x15\x06\x005\x04\x18\x04list\x15\x02\x005\x02\x18\ael" + 167 "ement\x15\x02\x15\x02\x005\x04\x18\x03map\x15\x04\x15" + 168 "\x04\x00\x15\f%\x00\x18\x03key%\x00\x00\x15\x02%\x02\x18\x05" + 169 "value\x005\x02\x18\rnested_str" + 170 "uct\x15\b\x00\x15\x02%\x02\x18\x01A\x005\x02\x18\x01b\x15" + 171 "\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x00\x15\x02%\x02\x18" + 172 "\aelement\x005\x02\x18\x01C\x15\x02\x005\x02\x18" + 173 "\x01d\x15\x02\x15\x06\x005\x04\x18\x04list\x15\x02\x005\x02" + 174 "\x18\aelement\x15\x02\x15\x06\x005\x04\x18\x04li" + 175 "st\x15\x02\x005\x02\x18\aelement\x15\x04\x00\x15" + 176 "\x02%\x02\x18\x01E\x00\x15\f%\x02\x18\x01F%\x00\x005\x02\x18" + 177 "\x01g\x15\x02\x15\x02\x005\x04\x18\x03map\x15\x04\x15\x04\x00\x15" + 178 "\f%\x00\x18\x03key%\x00\x005\x02\x18\x05value" + 179 "\x15\x02\x005\x02\x18\x01H\x15\x02\x005\x02\x18\x01i\x15\x02\x15\x06" + 180 "\x005\x04\x18\x04list\x15\x02\x00\x15\n%\x02\x18\ael" + 181 "ement\x00\x16\x0e\x19\x1c\x19\xdc&\b\x1c\x15\x04\x195\b" + 182 "\x00\x06\x19\x18\x02id\x15\x00\x16\x0e\x16\xce\x01\x16\xce\x01&\b<" + 183 "\x18\b\a\x00\x00\x00\x00\x00\x00\x00\x18\b\x01\x00\x00\x00\x00\x00\x00\x00" + 184 "\x16\x00\x00\x00\x00&\xd6\x01\x1c\x15\x02\x19%\x06\x04\x198\tin" + 185 "t_array\x04list\aelement" + 186 "\x15\x00\x16\x1c\x16\x9c\x01\x16\x9c\x01&\xd6\x01<\x18\x04\x03\x00\x00\x00" + 187 "\x18\x04\x01\x00\x00\x10\x16\x10\x00\x00\x00&\xf2\x02\x1c\x15\x02\x19%\x06" + 188 "\x04\x19X\x0fint_array_Array\x04" + 189 "list\aelement\x04list\ael" + 190 "ement\x15\x00\x16(\x16\xce\x01\x16\xce\x01&\xf2\x02<\x18" + 191 "\x04\x06\x00\x00\x00\x18\x04\x01\x00\x00\x00\x16\x14\x00\x00\x00&\xc0\x04\x1c" + 192 "\x15\f\x19%\x06\x04\x198\aint_map\x03map" + 193 "\x03key\x15\x00\x16\x14\x16\xa0\x01\x16\xa0\x01&\xc0\x04<\x18\x02" + 194 "k3\x18\x02k1\x16\b\x00\x00\x00&\xe0\x05\x1c\x15\x02\x19%\x00" + 195 "\x06\x198\aint_map\x03map\x05valu" + 196 "e\x15\x00\x16\x14\x16z\x16z&\xe0\x05<\x18\x04d\x00\x00\x00\x18" + 197 "\x04\x01\x00\x00\x00\x16\x0e\x00\x00\x00&\xda\x06\x1c\x15\f\x19%\x06\x04" + 198 "\x19X\rint_Map_Array\x04lis" + 199 "t\aelement\x03map\x03key\x15\x00\x16" + 200 "\x16\x16\x9a\x01\x16\x9a\x01&\xda\x06<\x18\x02k3\x18\x02k1\x16" + 201 "\x10\x00\x00\x00&\xf4\a\x1c\x15\x02\x19%\x06\x04\x19X\rint" + 202 "_Map_Array\x04list\aele-" + 203 "ent\x03map\x05value\x15\x00\x16\x16\x16\x90\x01" + 204 "\x16\x90\x01&\xf4\a<\x18\x04\x01\x00\x00\x00\x18\x04\x01\x00\x00\x00\x16" + 205 "\x12\x00\x00\x00&\x84\t\x1c\x15\x02\x195\b\x00\x06\x19(\rne" + 206 "sted_struct\x01A\x15\x00\x16\x0e\x16`\x16" + 207 "`&\x84\t<\x18\x04\a\x00\x00\x00\x18\x04\x01\x00\x00\x00\x16\n\x00" + 208 "\x00\x00&\xe4\t\x1c\x15\x02\x19%\x00\x06\x19H\rneste" + 209 "d_struct\x01b\x04list\aelem" + 210 "ent\x15\x00\x16\x12\x16~\x16~&\xe4\t<\x18\x04\x03\x00\x00" + 211 "\x00\x18\x04\x01\x00\x00\x00\x16\f\x00\x00\x00&\xe2\n\x1c\x15\x02\x19%" + 212 "\x06\x04\x19\x88\rnested_struct\x01C" + 213 "\x01d\x04list\aelement\x04list" + 214 "\ael\xecment\x01E\x15\x00\x16&\x16\xb4\x01\x16\xb4\x01" + 215 "&\xe2\n<\x18\x04\v\x00\x00\x00\x18\x04\xf6\xff\xff\xff\x16\x1a\x00\x00" + 216 "\x00&\x96\f\x1c\x15\f\x19%\x06\x04\x19\x88\rnested" + 217 "_struct\x01C\x01d\x04list\aele" + 218 "ment\x04list\aelement\x01F\x15" + 219 "\x00\x16&\x16\xba\x01\x16\xba\x01&\x96\f<\x18\x01c\x18\x03aa" + 220 "a\x16\x1a\x00\x00\x00&\xd0\r\x1c\x15\f\x19%\x06\x04\x19H\rn" + 221 "ested_struct\x01g\x03map\x03k" + 222 "ey\x15\x00\x16\x16\x16\xca\x01\x16\xca\x01&\xd0\r<\x18\x02g5" + 223 "\x18\x03foo\x16\b\x00\x00\x00&\x9a\x0f\x1c\x15\n\x19%\x06\x04" + 224 "\x19\x88\rnested_struct\x01g\x03m" + 225 "ap\x05value\x01H\x01i\x04list\ael" + 226 "ement\x15\x00\x16\x1a\x16\xd0\x01\x16\xd0\x01&\x9a\x0f<\x18" + 227 "\bffffff\n@\x18\b\x9a\x99\x99\x99\x99\x99\xf1?\x16" + 228 "\x12\x00\x00\x00\x16\xe2\x10\x16\x0e\x00\x19\x1c\x18\x13pa:que" + 229 "t.avro.schema\x18\xc0\t{\"ty" + 230 "pe\":\"record\",\"name\":" + 231 "\"ComplexTypesTbl\",\"n" + 232 "amespace\":\"org.apach" + 233 "e.impala\",\"fields\":[" + 234 "{\"name\":\"id\",\"type\":" + 235 "[\"null\",\"long\"]},{\"n" + 236 "ame\":\"int_array\",\"ty" + 237 "pe\":[\"null\",{\"type\":" + 238 "\"array\",\"ioems\":[\"nu" + 239 "ll\",\"int\"]}]},{\"name" + 240 "\":\"int_array_Array\"," + 241 "\"type\":[\"null\",{\"typ" + 242 "e\":\"array\",\"items\":[" + 243 "\"null\",{\"type\":\"arra" + 244 "y\",\"items\":[\"null\",\"" + 245 "int\"]}]}]},{\"name\":\"" + 246 "int_map\",\"type\":[\"nu" + 247 "ll\",{\"type\":\"map\",\"v" + 248 "alues\":[\"null\",\"int\"" + 249 "]}]},{\"na\xfbe\":\"int_Ma" + 250 "p_Array\",\"type\":[\"nu" + 251 "ll\",{\"type\":\"array\"," + 252 "\"items\":[\"null\",{\"ty" + 253 "pe\":\"map\",\"values\":[" + 254 "\"null\",\"int\"]}]}]},{" + 255 "\"name\":\"nested_struc" + 256 "t\",\"type\":[\"null\",{\"" + 257 "type\":\"record\",\"name" + 258 "\":\"r1\",\"fields\":[{\"n" + 259 "ame\":\"A\",\"type\":[ nu" + 260 "ll\",\"int\"]},{\"name\":" + 261 "\"b\",\"type\":[\"null\",{" + 262 "\"type\":\"array\",\"item" + 263 "s\":[\"nulc\",\"int\"]}]}" + 264 ",{\"name\":\"C\",\"type\":" + 265 "[\"null\",{\"type\":\"rec" + 266 "ord\",\"name\":\"r2\",\"fi" + 267 "elds\":[{\"name\":\"d\",\"" + 268 "type\":[\"null\",{\"type" + 269 "\":\"array\",\"items\":[\"" + 270 "null\",{\"type\":\"array" + 271 "\",\"items\":[\"null\",{\"" + 272 "type\":\"record\",\"name" + 273 "\":\"r3\",\"fields\":[{\"n" + 274 "ame\":\"E\",\"type\":[\"nu" + 275 "ll\",\"int\"]},{\"name\":" + 276 "\"F\",\"type\":[\"null\",\"" + 277 "string\"]}]}]}]}]}]}]" + 278 "},{\"name\":\"g\",\"type\"" + 279 ":[\"null\",{\"type\":\"ma" + 280 "p\",\"values\":[\"null\"," + 281 "{\"type\":\"record\",\"na" + 282 "me\":\"r4\",\"fields\":[{" + 283 "\"name\":\"H\",\"type\":[\"" + 284 "null\",{\"type\":\"recor" + 285 "d\",\"name\":\"r5\",\"fiel" + 286 "ds\":[{\"name\":\"i\",\"ty" + 287 "pe\":[\"nul\xef\xff\xff\xff\xff\xff\xff\xffe\":" + 288 "\"array\",\"items\":[\"nu" + 289 "ll\",\"double\"]}]}]}]}" + 290 "]}]}]}]}]}]}\x00\x18Iparqu" + 291 "et-mr version 1.8.0 " + 292 "(bui,d 0fda28af84b97" + 293 "46396014ad6a415b9059" + 294 "2a98b3b)\x00\xfb\n\x00\x00PAR1") 295 296 readAllData(t, data) 297 }