int main(int argc, char **argv) { t_arguments arguments; int i; void *current_file_data; i = 0; if (get_arguments(argc, argv, &arguments) == -1) return (-1); while (arguments.file_paths[i]) { if (access(arguments.file_paths[i], F_OK) == -1) printf("nm: '%s': No such file\n", arguments.file_paths[i]); else { if (arguments.number_of_files > 1) printf("\n%s:\n", arguments.file_paths[i]); if ((current_file_data = open_file(arguments.file_paths[i])) == NULL) return (-1); if (check_header_type((Elf64_Ehdr*) current_file_data) == -1) return (-1); if (analyse_file_data(current_file_data, &arguments) == -1) return (-1); } i++; } return (0); }
int header_field_cb (http_parser *p, const char *buf, size_t len, char partial) { uint32_t i; header *h; client_t *client = get_client(p); request *req = client->req; char temp[len]; buffer_result ret = MEMORY_ERROR; if (req->last_header_element != FIELD){ if(LIMIT_REQUEST_FIELDS <= req->num_headers){ client->bad_request_code = 400; return -1; } req->num_headers++; } i = req->num_headers; h = req->headers[i]; key_upper(temp, buf, len); if(h){ ret = write2buf(h->field, temp, len); }else{ req->headers[i] = h = new_header(128, LIMIT_REQUEST_FIELD_SIZE, 1024, LIMIT_REQUEST_FIELD_SIZE); rack_header_type type = check_header_type(temp); if(type == OTHER){ ret = write2buf(h->field, "HTTP_", 5); } ret = write2buf(h->field, temp, len); //printf("%s \n", getString(h->field)); } switch(ret){ case MEMORY_ERROR: client->bad_request_code = 500; return -1; case LIMIT_OVER: client->bad_request_code = 400; return -1; default: break; } req->last_header_element = FIELD; return 0; }