]> git.ipfire.org Git - thirdparty/asterisk.git/commit
main/untils: Prevent potential infinite loop in ast_careful_fwrite
authorMatthew Jordan <mjordan@digium.com>
Thu, 3 Jul 2014 11:19:40 +0000 (11:19 +0000)
committerMatthew Jordan <mjordan@digium.com>
Thu, 3 Jul 2014 11:19:40 +0000 (11:19 +0000)
commit904a6b3910eb3c8e34081493b2eb3b9c03d4eebd
tree564615ffc92fbe3e3dca6524889a6ac064a58d87
parent67a11896e7cff79a725f9c00f911f2577777275e
main/untils: Prevent potential infinite loop in ast_careful_fwrite

A loop in ast_careful_fwrite exists that will continually attempt to write to
a file stream, even in the presence of EAGAIN/EINTR errors. However, if a
connection that uses ast_careful_fwrite closes suddenly, ast_careful_fwrite's
call to fflush may return EAGAIN/EINTER along with EOF. A subsequent call to
fflush will return EOF but not clear errno, resulting in an infinite loop.

This patch clears errno after it is detected and handled the loop, such that
any subsequent call to fflush will not get erroneously stuck.

Review: https://reviewboard.asterisk.org/r/3704

ASTERISK-23984 #close
Reported by: Steve Davies
patches:
  fflush_loop_fix uploaded by one47 (License 5012)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@417797 65c4cc65-6c06-0410-ace0-fbb531ad65f3
main/utils.c