diff --git a/channels/printer/client/cups/printer_cups.c b/channels/printer/client/cups/printer_cups.c index ac327cc4e..de5640e44 100644 --- a/channels/printer/client/cups/printer_cups.c +++ b/channels/printer/client/cups/printer_cups.c @@ -90,21 +90,15 @@ static UINT printer_cups_write_printjob(rdpPrintJob* printjob, const BYTE* data, #ifndef _CUPS_API_1_4 { - FILE* fp; - - fp = winpr_fopen((const char*)cups_printjob->printjob_object, "a+b"); + FILE* fp = winpr_fopen((const char*)cups_printjob->printjob_object, "a+b"); if (!fp) return ERROR_INTERNAL_ERROR; - if (fwrite(data, 1, size, fp) < size) - { - fclose(fp); - return ERROR_INTERNAL_ERROR; - // FIXME once this function doesn't return void anymore! - } - + const size_t r = fwrite(data, 1, size, fp); fclose(fp); + if (r < size) + return ERROR_INTERNAL_ERROR; } #else diff --git a/channels/tsmf/client/tsmf_media.c b/channels/tsmf/client/tsmf_media.c index fcf6d72f8..6fa8d01bd 100644 --- a/channels/tsmf/client/tsmf_media.c +++ b/channels/tsmf/client/tsmf_media.c @@ -480,12 +480,12 @@ static BOOL tsmf_sample_playback_video(TSMF_SAMPLE* sample) extract the Y values to create a grayscale image. */ static int frame_id = 0; char buf[100]; - FILE* fp; if ((frame_id % 30) == 0) { sprintf_s(buf, sizeof(buf), "/tmp/FreeRDP_Frame_%d.ppm", frame_id); - fp = fopen(buf, "wb"); + FILE* fp = fopen(buf, "wb"); + if (fp) { fwrite("P5\n", 1, 3, fp); sprintf_s(buf, sizeof(buf), "%"PRIu32" %"PRIu32"\n", sample->stream->width, sample->stream->height); @@ -495,6 +495,7 @@ static BOOL tsmf_sample_playback_video(TSMF_SAMPLE* sample) fflush(fp); fclose(fp); } + } frame_id++; #endif diff --git a/client/common/client_cliprdr_file.c b/client/common/client_cliprdr_file.c index 4357473cb..3cf65d077 100644 --- a/client/common/client_cliprdr_file.c +++ b/client/common/client_cliprdr_file.c @@ -1537,23 +1537,20 @@ static void cliprdr_local_file_try_close(CliprdrLocalFile* file, UINT res, UINT6 WINPR_ASSERT(file->context); WLog_Print(file->context->log, WLOG_DEBUG, "closing file %s after error %" PRIu32, file->name, res); - fclose(file->fp); - file->fp = NULL; } else if (((file->size > 0) && (offset + size >= file->size))) { WINPR_ASSERT(file->context); WLog_Print(file->context->log, WLOG_DEBUG, "closing file %s after read", file->name); - fclose(file->fp); - file->fp = NULL; } else { // TODO: we need to keep track of open files to avoid running out of file descriptors // TODO: for the time being just close again. + } + if (file->fp) fclose(file->fp); file->fp = NULL; - } } static UINT cliprdr_file_context_server_file_size_request( diff --git a/libfreerdp/codec/test/TestFreeRDPCodecRemoteFX.c b/libfreerdp/codec/test/TestFreeRDPCodecRemoteFX.c index e2ececa98..29cea99a6 100644 --- a/libfreerdp/codec/test/TestFreeRDPCodecRemoteFX.c +++ b/libfreerdp/codec/test/TestFreeRDPCodecRemoteFX.c @@ -877,8 +877,10 @@ int TestFreeRDPCodecRemoteFX(int argc, char* argv[]) #if 0 FILE *f = fopen("/tmp/windows.data", "w"); + if (f) { fwrite(dest, IMG_WIDTH * IMG_HEIGHT, FORMAT_SIZE, f); fclose(f); + } #endif if (!fuzzyCompareImage(srefImage, dest, IMG_WIDTH * IMG_HEIGHT)) diff --git a/libfreerdp/core/streamdump.c b/libfreerdp/core/streamdump.c index 7a2308201..32806f6dd 100644 --- a/libfreerdp/core/streamdump.c +++ b/libfreerdp/core/streamdump.c @@ -187,7 +187,7 @@ fail: SSIZE_T stream_dump_append(const rdpContext* context, UINT32 flags, wStream* s, size_t* offset) { SSIZE_T rc = -1; - FILE* fp; + FILE* fp = NULL; const UINT32 mask = STREAM_MSG_SRV_RX | STREAM_MSG_SRV_TX; CONNECTION_STATE state = freerdp_get_state(context); int r; @@ -219,7 +219,8 @@ SSIZE_T stream_dump_append(const rdpContext* context, UINT32 flags, wStream* s, goto fail; *offset = (size_t)rc; fail: - fclose(fp); + if (fp) + fclose(fp); return rc; } @@ -227,7 +228,7 @@ SSIZE_T stream_dump_get(const rdpContext* context, UINT32* flags, wStream* s, si UINT64* pts) { SSIZE_T rc = -1; - FILE* fp; + FILE* fp = NULL; int r; if (!context || !s || !offset) @@ -244,7 +245,8 @@ SSIZE_T stream_dump_get(const rdpContext* context, UINT32* flags, wStream* s, si rc = _ftelli64(fp); fail: - fclose(fp); + if (fp) + fclose(fp); return rc; } diff --git a/libfreerdp/core/test/TestStreamDump.c b/libfreerdp/core/test/TestStreamDump.c index b3179f033..e058c3aec 100644 --- a/libfreerdp/core/test/TestStreamDump.c +++ b/libfreerdp/core/test/TestStreamDump.c @@ -83,7 +83,8 @@ static BOOL test_entry_read_write(void) fail: Stream_Free(sr, TRUE); Stream_Free(sw, TRUE); - fclose(fp); + if (fp) + fclose(fp); if (name) DeleteFileA(name); free(name); diff --git a/libfreerdp/crypto/certificate_store.c b/libfreerdp/crypto/certificate_store.c index 0055dcfb6..8247148d9 100644 --- a/libfreerdp/crypto/certificate_store.c +++ b/libfreerdp/crypto/certificate_store.c @@ -124,7 +124,8 @@ BOOL freerdp_certificate_store_save_data(rdpCertificateStore* store, const rdpCe rc = TRUE; fail: - fclose(fp); + if (fp) + fclose(fp); free(path); return rc; } diff --git a/libfreerdp/crypto/crypto.c b/libfreerdp/crypto/crypto.c index b1adf9ed6..7af33d68f 100644 --- a/libfreerdp/crypto/crypto.c +++ b/libfreerdp/crypto/crypto.c @@ -229,7 +229,8 @@ fail: WLog_WARN(TAG, "Failed to read PEM from file '%s' [%s]", filename, winpr_strerror(errno, buffer, sizeof(buffer))); } - fclose(fp); + if (fp) + fclose(fp); free(pem); return NULL; } diff --git a/libfreerdp/crypto/tls.c b/libfreerdp/crypto/tls.c index db999a8e2..da3ea64bc 100644 --- a/libfreerdp/crypto/tls.c +++ b/libfreerdp/crypto/tls.c @@ -680,9 +680,12 @@ static void SSLCTX_keylog_cb(const SSL* ssl, const char* line) if (dfile) { FILE* f = winpr_fopen(dfile, "a+"); - fwrite(line, strlen(line), 1, f); - fwrite("\n", 1, 1, f); - fclose(f); + if (f) + { + fwrite(line, strlen(line), 1, f); + fwrite("\n", 1, 1, f); + fclose(f); + } } } diff --git a/libfreerdp/utils/passphrase.c b/libfreerdp/utils/passphrase.c index f4a6a949f..5b6f7dd24 100644 --- a/libfreerdp/utils/passphrase.c +++ b/libfreerdp/utils/passphrase.c @@ -206,7 +206,8 @@ error: tcsetattr(terminal_fildes, TCSAFLUSH, &orig_flags); if (terminal_fildes != STDIN_FILENO) { - fclose(fp); + if (fp) + fclose(fp); } errno = saved_errno; return NULL; diff --git a/server/Sample/sfreerdp.c b/server/Sample/sfreerdp.c index b23aa4eb5..04a3541e1 100644 --- a/server/Sample/sfreerdp.c +++ b/server/Sample/sfreerdp.c @@ -298,7 +298,7 @@ out: static BOOL test_peer_load_icon(freerdp_peer* client) { testPeerContext* context; - FILE* fp; + FILE* fp = NULL; int i; char line[50] = { 0 }; BYTE* rgb_data = NULL; @@ -363,7 +363,8 @@ static BOOL test_peer_load_icon(freerdp_peer* client) out_fail: free(rgb_data); context->bg_data = NULL; - fclose(fp); + if (fp) + fclose(fp); return FALSE; } diff --git a/winpr/libwinpr/utils/image.c b/winpr/libwinpr/utils/image.c index b8ec9ff1a..7f1e8c155 100644 --- a/winpr/libwinpr/utils/image.c +++ b/winpr/libwinpr/utils/image.c @@ -158,7 +158,7 @@ int winpr_bitmap_write(const char* filename, const BYTE* data, size_t width, siz int winpr_bitmap_write_ex(const char* filename, const BYTE* data, size_t stride, size_t width, size_t height, size_t bpp) { - FILE* fp; + FILE* fp = NULL; BYTE* bmp_header = NULL; const size_t bpp_stride = width * (bpp / 8); @@ -190,7 +190,8 @@ int winpr_bitmap_write_ex(const char* filename, const BYTE* data, size_t stride, ret = 1; fail: - fclose(fp); + if (fp) + fclose(fp); free(bmp_header); return ret; } diff --git a/winpr/libwinpr/utils/ini.c b/winpr/libwinpr/utils/ini.c index 184a8d6d7..05e232589 100644 --- a/winpr/libwinpr/utils/ini.c +++ b/winpr/libwinpr/utils/ini.c @@ -157,7 +157,8 @@ static BOOL IniFile_Load_File(wIniFile* ini, const char* filename) if (fread(ini->buffer, (size_t)fileSize, 1, ini->fp) != 1) goto out_buffer; - fclose(ini->fp); + if (ini->fp) + fclose(ini->fp); ini->fp = NULL; ini->buffer[fileSize] = '\n'; ini->buffer[fileSize + 1] = '\0'; @@ -167,7 +168,8 @@ out_buffer: free(ini->buffer); ini->buffer = NULL; out_file: - fclose(ini->fp); + if (ini->fp) + fclose(ini->fp); ini->fp = NULL; return FALSE; } @@ -778,7 +780,8 @@ int IniFile_WriteFile(wIniFile* ini, const char* filename) if (fwrite((void*)buffer, length, 1, ini->fp) != 1) ret = -1; - fclose(ini->fp); + if (ini->fp) + fclose(ini->fp); free(buffer); return ret; } diff --git a/winpr/libwinpr/utils/sam.c b/winpr/libwinpr/utils/sam.c index dd043638a..6eed78aec 100644 --- a/winpr/libwinpr/utils/sam.c +++ b/winpr/libwinpr/utils/sam.c @@ -359,7 +359,8 @@ void SamClose(WINPR_SAM* sam) { if (sam != NULL) { - fclose(sam->fp); + if (sam->fp) + fclose(sam->fp); free(sam); } } diff --git a/winpr/libwinpr/utils/wlog/BinaryAppender.c b/winpr/libwinpr/utils/wlog/BinaryAppender.c index 0bd457fad..b5b3c9344 100644 --- a/winpr/libwinpr/utils/wlog/BinaryAppender.c +++ b/winpr/libwinpr/utils/wlog/BinaryAppender.c @@ -94,7 +94,8 @@ static BOOL WLog_BinaryAppender_Close(wLog* log, wLogAppender* appender) if (!binaryAppender->FileDescriptor) return TRUE; - fclose(binaryAppender->FileDescriptor); + if (binaryAppender->FileDescriptor) + fclose(binaryAppender->FileDescriptor); binaryAppender->FileDescriptor = NULL; diff --git a/winpr/libwinpr/utils/wlog/PacketMessage.c b/winpr/libwinpr/utils/wlog/PacketMessage.c index fb80cd06a..a07e76132 100644 --- a/winpr/libwinpr/utils/wlog/PacketMessage.c +++ b/winpr/libwinpr/utils/wlog/PacketMessage.c @@ -232,7 +232,8 @@ wPcap* Pcap_Open(char* name, BOOL write) return pcap; out_fail: - fclose(pcap_fp); + if (pcap_fp) + fclose(pcap_fp); free(pcap); return NULL; }