static void parse_content_disposition(struct attachment_istream *astream, const struct message_header_line *hdr) { /* just pass it without parsing to is_attachment() callback */ i_free(astream->part.content_disposition); astream->part.content_disposition = i_strndup(hdr->full_value, hdr->full_value_len); }
int cmd_authenticate(struct imap_client *imap_client, bool *parsed_r) { /* NOTE: This command's input is handled specially because the SASL-IR can be large. */ struct client *client = &imap_client->common; const unsigned char *data; size_t i, size; int ret; *parsed_r = FALSE; /* <auth mechanism name> [<initial SASL response>] */ if (!imap_client->auth_mech_name_parsed) { data = i_stream_get_data(client->input, &size); for (i = 0; i < size; i++) { if (data[i] == ' ' || data[i] == '\r' || data[i] == '\n') break; } if (i == size) return 0; if (i == 0) { /* empty mechanism name */ imap_client->skip_line = TRUE; return -1; } i_free(client->auth_mech_name); client->auth_mech_name = i_strndup(data, i); imap_client->auth_mech_name_parsed = TRUE; if (data[i] == ' ') i++; i_stream_skip(client->input, i); } /* get SASL-IR, if any */ if ((ret = client_auth_read_line(client)) <= 0) return ret; *parsed_r = TRUE; imap_client->auth_mech_name_parsed = FALSE; return imap_client_auth_begin(imap_client, t_strdup(client->auth_mech_name), t_strdup(str_c(client->auth_response))); }
static int fs_crypt_read_file(const char *set_name, const char *path, char **key_data_r, const char **error_r) { struct istream *input; int ret; input = i_stream_create_file(path, (size_t)-1); while (i_stream_read(input) > 0) ; if (input->stream_errno != 0) { *error_r = t_strdup_printf("%s: read(%s) failed: %s", set_name, path, i_stream_get_error(input)); ret = -1; } else { size_t size; const unsigned char *data = i_stream_get_data(input, &size); *key_data_r = i_strndup(data, size); ret = 0; } i_stream_unref(&input); return ret; }