{
struct gp_inifile_context *ctx = (struct gp_inifile_context *) ctx_ptr;
ctx->data = talloc_realloc(ctx, ctx->data, struct keyval_pair *, ctx->keyval_count+1);
+ ctx->data[ctx->keyval_count] = talloc_zero(ctx, struct keyval_pair);
ctx->data[ctx->keyval_count]->key = talloc_asprintf(ctx, "%s:%s", ctx->current_section, key);
ctx->data[ctx->keyval_count]->val = talloc_strdup(ctx, value);
ctx->keyval_count++;
}
if (!convert_string_talloc(mem_ctx, CH_UTF16LE, CH_UNIX, data_in, n,
- (void **)&data_out, &converted_size, false))
+ (void *)&data_out, &converted_size))
{
status = NT_STATUS_INVALID_BUFFER_SIZE;
goto out;
}
if (write(tmp_fd, data_out, converted_size) != converted_size) {
- status = map_nt_error_from_unix(errno);
+ status = map_nt_error_from_unix_common(errno);
goto out;
}
{
struct gp_inifile_context *ctx = NULL;
NTSTATUS status;
+ int rv;
char *tmp_filename = NULL;
const char *ini_filename = NULL;
goto failed;
}
+ rv = pm_process(tmp_filename, change_section, store_keyval_pair, ctx);
+ if (!rv) {
+ return NT_STATUS_NO_SUCH_FILE;
+ }
+
+
ctx->generated_filename = tmp_filename;
ctx->mem_ctx = mem_ctx;
#define GPT_INI_PARAMETER_VERSION "Version"
#define GPT_INI_PARAMETER_DISPLAYNAME "displayName"
-NTSTATUS parse_gpt_ini(struct gp_inifile_context *ctx,
+NTSTATUS parse_gpt_ini(TALLOC_CTX *mem_ctx,
const char *filename,
uint32_t *version,
char **display_name)
int rv;
int v = 0;
char *name = NULL;
+ struct gp_inifile_context *ctx;
if (!filename) {
return NT_STATUS_INVALID_PARAMETER;
}
- rv = pm_process(filename, change_section, store_keyval_pair, NULL);
+ ctx = talloc_zero(mem_ctx, struct gp_inifile_context);
+ NT_STATUS_HAVE_NO_MEMORY(ctx);
+
+ rv = pm_process(filename, change_section, store_keyval_pair, ctx);
if (!rv) {
return NT_STATUS_NO_SUCH_FILE;
}
*version = v;
}
- result = NT_STATUS_OK;
+ talloc_free(ctx);
- return result;
+ return NT_STATUS_OK;
}