diff --git a/lib/config/config.c b/lib/config/config.c index 25a87c983..aedbb2b1e 100644 --- a/lib/config/config.c +++ b/lib/config/config.c @@ -522,7 +522,7 @@ int config_file_read_fd(struct dm_config_tree *cft, struct device *dev, dev_io_r if (!(dev->flags & DEV_REGULAR) || size2) use_plain_read = 0; - if (!(buf = malloc(size + size2))) { + if (!(buf = zalloc(size + size2))) { log_error("Failed to allocate circular buffer."); return 0; } diff --git a/tools/pvck.c b/tools/pvck.c index 629e1feee..0d1bc1b17 100644 --- a/tools/pvck.c +++ b/tools/pvck.c @@ -2955,7 +2955,7 @@ static int _read_metadata_file(struct cmd_context *cmd, struct metadata_file *mf goto out; } - if (!(text_buf = zalloc(text_size + 1))) + if (!(text_buf = malloc(text_size + 1))) goto_out; rv = read(fd, text_buf, text_size); @@ -2964,8 +2964,7 @@ static int _read_metadata_file(struct cmd_context *cmd, struct metadata_file *mf free(text_buf); goto out; } - - text_size += 1; /* null terminating byte */ + text_buf[text_size++] = 0; /* null terminating byte */ if (close(fd)) stack; diff --git a/tools/pvscan.c b/tools/pvscan.c index ec33c9a9a..b19b74b3e 100644 --- a/tools/pvscan.c +++ b/tools/pvscan.c @@ -223,6 +223,7 @@ static int _online_pvid_file_read(char *path, int *major, int *minor, char *vgna log_warn("No info in %s", path); return 0; } + buf[rv] = 0; /* \0 terminated buffer */ if (sscanf(buf, "%d:%d", major, minor) != 2) { log_warn("No device numbers in %s", path);