1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

Check for failing dm_asprintf

This commit is contained in:
Zdenek Kabelac 2012-02-28 14:25:37 +00:00
parent fbf6b89a84
commit c682e83760

View File

@ -339,18 +339,23 @@ struct thread_baton {
static int buffer_rewrite(char **buf, const char *format, const char *string) {
char *old = *buf;
dm_asprintf(buf, format, *buf, string);
int r = dm_asprintf(buf, format, *buf, string);
dm_free(old);
return 0;
return (r < 0) ? 0 : 1;
}
static int buffer_line(const char *line, void *baton) {
response *r = baton;
if (r->buffer)
buffer_rewrite(&r->buffer, "%s\n%s", line);
else
dm_asprintf(&r->buffer, "%s\n", line);
return 0;
if (r->buffer) {
if (!buffer_rewrite(&r->buffer, "%s\n%s", line))
return 0;
} else if (dm_asprintf(&r->buffer, "%s\n", line) < 0)
return 0;
return 1;
}
static response builtin_handler(daemon_state s, client_handle h, request r)
@ -387,7 +392,8 @@ static void *client_thread(void *baton)
if (!res.buffer) {
dm_config_write_node(res.cft->root, buffer_line, &res);
buffer_rewrite(&res.buffer, "%s\n\n", NULL);
if (!buffer_rewrite(&res.buffer, "%s\n\n", NULL))
goto fail;
dm_config_destroy(res.cft);
}