mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 15:58:50 -05:00
Check return value of fwrite when copying files
Check that writing to destination file actually occurs in _alpm_copyfile. Required adding a new error (PM_ERR_WRITE) as none of the others appeared appropriate. Prevents compiler warning when using -D_FORTIFY_SOURCE=2. Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
96a1255ead
commit
41724cbcde
@ -522,6 +522,7 @@ enum _pmerrno_t {
|
|||||||
PM_ERR_FILE_CONFLICTS,
|
PM_ERR_FILE_CONFLICTS,
|
||||||
/* Misc */
|
/* Misc */
|
||||||
PM_ERR_RETRIEVE,
|
PM_ERR_RETRIEVE,
|
||||||
|
PM_ERR_WRITE,
|
||||||
PM_ERR_INVALID_REGEX,
|
PM_ERR_INVALID_REGEX,
|
||||||
/* External library errors */
|
/* External library errors */
|
||||||
PM_ERR_LIBARCHIVE,
|
PM_ERR_LIBARCHIVE,
|
||||||
|
@ -143,7 +143,15 @@ int _alpm_copyfile(const char *src, const char *dest)
|
|||||||
|
|
||||||
/* do the actual file copy */
|
/* do the actual file copy */
|
||||||
while((len = fread(buf, 1, CPBUFSIZE, in))) {
|
while((len = fread(buf, 1, CPBUFSIZE, in))) {
|
||||||
fwrite(buf, 1, len, out);
|
size_t nwritten = 0;
|
||||||
|
nwritten = fwrite(buf, 1, len, out);
|
||||||
|
if((nwritten != len) || ferror(out)) {
|
||||||
|
pm_errno = PM_ERR_WRITE;
|
||||||
|
_alpm_log(PM_LOG_ERROR, _("error writing to file '%s': %s\n"),
|
||||||
|
dest, strerror(errno));
|
||||||
|
ret = -1;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* chmod dest to permissions of src, as long as it is not a symlink */
|
/* chmod dest to permissions of src, as long as it is not a symlink */
|
||||||
|
Loading…
Reference in New Issue
Block a user