From e6446c7b07d99b6e7bb4c500d702ce68206b96a3 Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Fri, 31 Jan 2025 14:06:45 +0800 Subject: [PATCH] Fix argument pointer may be null --- Source/MediaInfo/Audio/File_Ac4.h | 6 ++++-- Source/MediaInfo/Audio/File_Adm.cpp | 5 ++++- Source/MediaInfo/ExternalCommandHelpers.cpp | 20 ++++++++++---------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Source/MediaInfo/Audio/File_Ac4.h b/Source/MediaInfo/Audio/File_Ac4.h index 37f9b11ef..b642eea1e 100644 --- a/Source/MediaInfo/Audio/File_Ac4.h +++ b/Source/MediaInfo/Audio/File_Ac4.h @@ -360,10 +360,12 @@ private : uint8_t* Data_ToDelete=Data; Size=NewOffset; Data=new int8u[Size]; - memcpy(Data, Data_ToDelete, Offset); + if (Data_ToDelete) + memcpy(Data, Data_ToDelete, Offset); delete[] Data_ToDelete; } - memcpy(Data+Offset, BufferToAdd, SizeToAdd); + if (Data+Offset) + memcpy(Data+Offset, BufferToAdd, SizeToAdd); Offset=NewOffset; } diff --git a/Source/MediaInfo/Audio/File_Adm.cpp b/Source/MediaInfo/Audio/File_Adm.cpp index 11b8c1437..a97b9425c 100644 --- a/Source/MediaInfo/Audio/File_Adm.cpp +++ b/Source/MediaInfo/Audio/File_Adm.cpp @@ -2141,7 +2141,10 @@ size_t Atmos_zone_Pos(const string& Name, float32* Values) { } string CraftName(const char* Name, bool ID = false) { - return (ID && !strcmp(Name, "Track")) ? "track" : ((Name && Name[0] < 'a' ? "audio" : "") + string(Name)); + if (Name) + return (ID && !strcmp(Name, "Track")) ? "track" : ((Name && Name[0] < 'a' ? "audio" : "") + string(Name)); + else + return ""; } enum class E { diff --git a/Source/MediaInfo/ExternalCommandHelpers.cpp b/Source/MediaInfo/ExternalCommandHelpers.cpp index b11e807c1..411eceb59 100644 --- a/Source/MediaInfo/ExternalCommandHelpers.cpp +++ b/Source/MediaInfo/ExternalCommandHelpers.cpp @@ -159,8 +159,8 @@ int External_Command_Run(const Ztring& Command, const ZtringList& Arguments, Ztr { if (!CreatePipe(&StdErrRead, &StdErrWrite, &Attrs, 0)) { - CloseHandle(StdOutWrite); - CloseHandle(StdOutRead); + if (StdOutWrite) CloseHandle(StdOutWrite); + if (StdOutRead) CloseHandle(StdOutRead); return -1; } } @@ -182,15 +182,15 @@ int External_Command_Run(const Ztring& Command, const ZtringList& Arguments, Ztr if (!CreateProcessW(nullptr, (LPWSTR)CommandLine.Read().To_Unicode().c_str(), nullptr, nullptr, TRUE, CREATE_NO_WINDOW, nullptr, nullptr, &StartupInfo, &ProcessInfo)) { - CloseHandle(StdOutWrite); - CloseHandle(StdOutRead); - CloseHandle(StdErrWrite); - CloseHandle(StdErrRead); + if (StdOutWrite) CloseHandle(StdOutWrite); + if (StdOutRead) CloseHandle(StdOutRead); + if (StdErrWrite) CloseHandle(StdErrWrite); + if (StdErrRead) CloseHandle(StdErrRead); return -1; } - CloseHandle(StdOutWrite); - CloseHandle(StdErrWrite); + if (StdOutWrite) CloseHandle(StdOutWrite); + if (StdErrWrite) CloseHandle(StdErrWrite); char Buf[128]; if (StdOut) @@ -214,8 +214,8 @@ int External_Command_Run(const Ztring& Command, const ZtringList& Arguments, Ztr } } - CloseHandle(StdOutRead); - CloseHandle(StdErrRead); + if (StdOutRead) CloseHandle(StdOutRead); + if (StdErrRead) CloseHandle(StdErrRead); WaitForSingleObject(ProcessInfo.hProcess, INFINITE); GetExitCodeProcess(ProcessInfo.hProcess, &ExitCode);