From: Wilfried Goesgens Date: Thu, 15 Aug 2013 21:25:32 +0000 (+0200) Subject: FDIO: check for double freeing of an FDIO resource to fix possible double close ... X-Git-Tag: v8.22~25 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=3c0b1d8686c302e511389e2afbbbf436af2c56e9 FDIO: check for double freeing of an FDIO resource to fix possible double close / 0 fd close --- diff --git a/libcitadel/lib/stringbuf.c b/libcitadel/lib/stringbuf.c index bd67e0d48..9bc1c8eb0 100644 --- a/libcitadel/lib/stringbuf.c +++ b/libcitadel/lib/stringbuf.c @@ -3955,14 +3955,17 @@ void FDIOBufferDelete(FDIOBuffer *FDB) #ifdef LINUX_SPLICE if (EnableSplice) { - close(FDB->SplicePipe[0]); - close(FDB->SplicePipe[1]); + if (FDB->SplicePipe[0] > 0) + close(FDB->SplicePipe[0]); + if (FDB->SplicePipe[1] > 0) + close(FDB->SplicePipe[1]); } else #endif FreeStrBuf(&FDB->ChunkBuffer); - close(FDB->OtherFD); + if (FDB->OtherFD > 0) + close(FDB->OtherFD); memset(FDB, 0, sizeof(FDIOBuffer)); }