[PATCH] "pacman -Q --changelog": fix writing uninit'd mem
Carlo Teubner
carlo at cteubner.net
Sun Oct 3 07:24:06 UTC 2021
Previously, when printing a package changelog to stdout, we would write
chunks of data that were not necessarily nul-terminated to stdout using
a function (fputs) which requires the input string to be nul-terminated.
On my system, this would result in occasional garbage characters showing
up in the "pacman -Qc" output.
Fix this by never nul-terminating the chunk, and using the fwrite()
function which takes an explicit input size and does not require a
nul-terminated string.
Signed-off-by: Carlo Teubner <carlo at cteubner.net>
---
src/pacman/package.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/src/pacman/package.c b/src/pacman/package.c
index eaee3bb0..3eae9797 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -466,11 +466,7 @@ void dump_pkg_changelog(alpm_pkg_t *pkg)
char buf[CLBUF_SIZE];
size_t ret = 0;
while((ret = alpm_pkg_changelog_read(buf, CLBUF_SIZE, pkg, fp))) {
- if(ret < CLBUF_SIZE) {
- /* if we hit the end of the file, we need to add a null terminator */
- *(buf + ret) = '\0';
- }
- fputs(buf, stdout);
+ fwrite(buf, 1, ret, stdout);
}
alpm_pkg_changelog_close(pkg, fp);
putchar('\n');
--
2.33.0
More information about the pacman-dev
mailing list