From 3c0b1d8686c302e511389e2afbbbf436af2c56e9 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Thu, 15 Aug 2013 23:25:32 +0200 Subject: [PATCH] FDIO: check for double freeing of an FDIO resource to fix possible double close / 0 fd close --- libcitadel/lib/stringbuf.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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)); } -- 2.30.2