Fix potential data-loss in utils.WriteFile
os.write can do incomplete writes, as long as at least some bytes have been written (like write(2)): >>> os.write(fd, " " * 1300) 1300 >>> os.write(fd, " " * 1300) 1300 >>> os.write(fd, " " * 1300) 1300 >>> os.write(fd, " " * 1300) 980 >>> os.write(fd, " " * 1300) Traceback (most recent call last): File "<stdin>", line 1, in ? OSError: [Errno 28] No space left on device Note that incomplete write that only wrote 980 bytes, before the exception. To workaround this, we simply iterate until all data is written. Unittests could be written by using a parameter instead of hardcoding os.write and checking for incomplete writes. Signed-off-by:Iustin Pop <iustin@google.com> Reviewed-by:
Michael Hanselmann <hansmi@google.com>
Loading
Please register or sign in to comment