diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 8e4dd4258..b54839482 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2011-12-20 Aleksandr Platonov + + * fvwrite.c (__sfvwrite_r): Set __SMBF flag to avoid double free in + fclose. Enhance comment. + 2011-12-19 Jeff Johnston * NEWS: Update with 1.20.0 info. diff --git a/newlib/libc/stdio/fvwrite.c b/newlib/libc/stdio/fvwrite.c index f196b3cfe..384c62ce0 100644 --- a/newlib/libc/stdio/fvwrite.c +++ b/newlib/libc/stdio/fvwrite.c @@ -155,8 +155,10 @@ _DEFUN(__sfvwrite_r, (ptr, fp, uio), newsize); if (!str) { - /* Free buffer which is no longer used. */ + /* Free buffer which is no longer used and clear + __SMBF flag to avoid double free in fclose. */ _free_r (ptr, fp->_bf._base); + fp->_flags &= ~__SMBF; /* Ensure correct errno, even if free changed it. */ ptr->_errno = ENOMEM; goto err;