"pacman -Q --changelog": fix writing uninit'd mem
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@cteubner.net>
(cherry picked from commit 806ccd90ed
)
This commit is contained in:
parent
ec0bf17ced
commit
e56c7a3f41
1 changed files with 1 additions and 5 deletions
|
@ -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');
|
||||
|
|
Loading…
Add table
Reference in a new issue