At Mon, 22 Jun 2026 09:19:59 +0200, Peter Eisentraut <[email protected]> 
wrote in 
> While checking return/error handling of file system calls, I found
> that the copy_file_range() call in pg_combinebackup has a potential
> problem. If copy_file_range() returns 0, which is a documented
> condition, then the loop never makes progress and could spin forever.
> 
> The other uses of copy_file_range() in the tree are surrounded by
> different logic and don't appear to have this problem.
> 
> My suggested fix is to make a return value of 0 an error.  It most
> likely indicates that the source file has an unexpected size.

Good catch. I agree with the analysis, and the proposed fix looks
reasonable to me.

I also checked the other four uses of copy_file_range() in the
tree. All but one handle a zero return value as EOF, and the remaining
case (check_copy_file_range()) appears safe because it is only testing
whether copy_file_range() is usable.

Regards,

-- 
Kyotaro Horiguchi
NTT Open Source Software Center


Reply via email to