| 206 | }; |
| 207 | |
| 208 | TEST_F(Multipart, Test1) { |
| 209 | mpartp = htp_mpartp_create(cfg, bstr_dup_c("---------------------------41184676334"), 0 /* flags */); |
| 210 | |
| 211 | char *parts[999]; |
| 212 | |
| 213 | size_t i = 0; |
| 214 | parts[i++] = (char *) "-----------------------------41184676334\r\n"; |
| 215 | parts[i++] = (char *) "Content-Disposition: form-data;\n name=\"field1\"\r\n"; |
| 216 | parts[i++] = (char *) "\r\n"; |
| 217 | parts[i++] = (char *) "0123456789\r\n-"; |
| 218 | parts[i++] = (char *) "-------------"; |
| 219 | parts[i++] = (char *) "---------------41184676334\r\n"; |
| 220 | parts[i++] = (char *) "Content-Disposition: form-data;\n name=\"field2\"\r\n"; |
| 221 | parts[i++] = (char *) "\r\n"; |
| 222 | parts[i++] = (char *) "0123456789\r\n-"; |
| 223 | parts[i++] = (char *) "-------------"; |
| 224 | parts[i++] = (char *) "--------------X\r\n"; |
| 225 | parts[i++] = (char *) "-----------------------------41184676334\r\n"; |
| 226 | parts[i++] = (char *) "Content-Disposition: form-data;\n"; |
| 227 | parts[i++] = (char *) " "; |
| 228 | parts[i++] = (char *) "name=\"field3\"\r\n"; |
| 229 | parts[i++] = (char *) "\r\n"; |
| 230 | parts[i++] = (char *) "9876543210\r\n"; |
| 231 | parts[i++] = (char *) "-----------------------------41184676334\r\n"; |
| 232 | parts[i++] = (char *) "Content-Disposition: form-data; name=\"file1\"; filename=\"New Text Document.txt\"\r\nContent-Type: text/plain\r\n\r\n"; |
| 233 | parts[i++] = (char *) "1FFFFFFFFFFFFFFFFFFFFFFFFFFF\r\n"; |
| 234 | parts[i++] = (char *) "2FFFFFFFFFFFFFFFFFFFFFFFFFFE\r"; |
| 235 | parts[i++] = (char *) "3FFFFFFFFFFFFFFFFFFFFFFFFFFF\r\n4FFFFFFFFFFFFFFFFFFFFFFFFF123456789"; |
| 236 | parts[i++] = (char *) "\r\n"; |
| 237 | parts[i++] = (char *) "-----------------------------41184676334\r\n"; |
| 238 | parts[i++] = (char *) "Content-Disposition: form-data; name=\"file2\"; filename=\"New Text Document.txt\"\r\n"; |
| 239 | parts[i++] = (char *) "Content-Type: text/plain\r\n"; |
| 240 | parts[i++] = (char *) "\r\n"; |
| 241 | parts[i++] = (char *) "FFFFFFFFFFFFFFFFFFFFFFFFFFFZ"; |
| 242 | parts[i++] = (char *) "\r\n-----------------------------41184676334--"; |
| 243 | parts[i++] = NULL; |
| 244 | |
| 245 | i = 0; |
| 246 | for (;;) { |
| 247 | if (parts[i] == NULL) break; |
| 248 | htp_mpartp_parse(mpartp, parts[i], strlen(parts[i])); |
| 249 | i++; |
| 250 | } |
| 251 | |
| 252 | htp_mpartp_finalize(mpartp); |
| 253 | |
| 254 | // Examine the result |
| 255 | htp_multipart_t *body = htp_mpartp_get_multipart(mpartp); |
| 256 | ASSERT_TRUE(body != NULL); |
| 257 | ASSERT_TRUE(body->parts != NULL); |
| 258 | ASSERT_EQ(5, htp_list_size(body->parts)); |
| 259 | |
| 260 | for (size_t i = 0, n = htp_list_size(body->parts); i < n; i++) { |
| 261 | htp_multipart_part_t *part = (htp_multipart_part_t *) htp_list_get(body->parts, i); |
| 262 | |
| 263 | switch (i) { |
| 264 | case 0: |
| 265 | ASSERT_TRUE(part->name != NULL); |
nothing calls this directly
no test coverage detected