From a91969e12ddc5eb8b6e0aac4458c5de52c0f1a86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Mon, 16 May 2016 18:29:06 -0400 Subject: [PATCH 1/4] Fix uninitialized fEndDateUst. Reported by valgrind using the command below: $ valgrind jackd -p128 -t2000 -dalsa -dhw:0 -r44100 -p2048 -n2 -S ==17496== Memcheck, a memory error detector ==17496== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==17496== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info ==17496== Command: jackd -p128 -t2000 -dalsa -dhw:0 -r44100 -p2048 -n2 -S ==17496== jackdmp 1.9.11 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2016 Grame. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details JACK server starting in realtime mode with priority 10 self-connect-mode is "Don't restrict self connect requests" creating alsa driver ... hw:0|hw:0|2048|2|44100|0|0|nomon|swmeter|-|16bit configuring for 44100Hz, period = 2048 frames (46.4 ms), buffer = 2 periods ALSA: final selected sample format for capture: 16bit little-endian ALSA: use 2 periods for capture ALSA: final selected sample format for playback: 16bit little-endian ALSA: use 2 periods for playback ==17496== Thread 3: ==17496== Conditional jump or move depends on uninitialised value(s) ==17496== at 0x4E91CC9: Jack::JackEngineControl::CalcCPULoad(Jack::JackClientInterface**, Jack::JackGraphManager*, unsigned long, unsigned long) (JackEngineControl.cpp:58) ==17496== by 0x4EB3256: Jack::JackEngineControl::CycleBegin(Jack::JackClientInterface**, Jack::JackGraphManager*, unsigned long, unsigned long) (JackEngineControl.h:153) ==17496== by 0x4EAF54A: Jack::JackEngine::Process(unsigned long, unsigned long) (JackEngine.cpp:166) ==17496== by 0x4EA922E: Jack::JackLockedEngine::Process(unsigned long, unsigned long) (JackLockedEngine.h:261) ==17496== by 0x4EA8819: Jack::JackAudioDriver::ProcessGraphAsyncMaster() (JackAudioDriver.cpp:250) ==17496== by 0x4EA87D0: Jack::JackAudioDriver::ProcessGraphAsync() (JackAudioDriver.cpp:236) ==17496== by 0x4EA8795: Jack::JackAudioDriver::ProcessAsync() (JackAudioDriver.cpp:225) ==17496== by 0x4EA870E: Jack::JackAudioDriver::Process() (JackAudioDriver.cpp:202) ==17496== by 0x4EBA5DA: Jack::JackThreadedDriver::Process() (JackThreadedDriver.cpp:71) ==17496== by 0x4EBAC52: Jack::JackThreadedDriver::Execute() (JackThreadedDriver.cpp:244) ==17496== by 0x4EA4B63: Jack::JackPosixThread::ThreadHandler(void*) (JackPosixThread.cpp:61) ==17496== by 0x59F5181: start_thread (pthread_create.c:312) ==17496== ^CJack main caught signal 2 ==17496== ==17496== HEAP SUMMARY: ==17496== in use at exit: 95,475 bytes in 1,441 blocks ==17496== total heap usage: 2,793 allocs, 1,352 frees, 7,217,645 bytes allocated ==17496== ==17496== LEAK SUMMARY: ==17496== definitely lost: 1,458 bytes in 10 blocks ==17496== indirectly lost: 7,680 bytes in 4 blocks ==17496== possibly lost: 42,998 bytes in 1,314 blocks ==17496== still reachable: 43,339 bytes in 113 blocks ==17496== suppressed: 0 bytes in 0 blocks ==17496== Rerun with --leak-check=full to see details of leaked memory ==17496== ==17496== For counts of detected and suppressed errors, rerun with: -v ==17496== Use --track-origins=yes to see where uninitialised values come from ==17496== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) --- common/JackDriver.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/common/JackDriver.cpp b/common/JackDriver.cpp index 1e57abc6..aae7ee7b 100644 --- a/common/JackDriver.cpp +++ b/common/JackDriver.cpp @@ -48,6 +48,7 @@ JackDriver::JackDriver(const char* name, const char* alias, JackLockedEngine* en fEngine = engine; fGraphManager = NULL; fBeginDateUst = 0; + fEndDateUst = 0; fDelayedUsecs = 0.f; fIsMaster = true; fIsRunning = false; From ddf1b5a1846b0974bade54eed10437918007ac0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Mon, 16 May 2016 19:24:27 -0400 Subject: [PATCH 2/4] Fix initialization of string members. Reported by valgrind using the command below: $ valgrind jackd -p128 -t2000 -dalsa -dhw:0 -r44100 -p2048 -n2 -S ==8930== Memcheck, a memory error detector ==8930== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==8930== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info ==8930== Command: jackd -p128 -t2000 -dalsa -dhw:0 -r44100 -p2048 -n2 -S ==8930== jackdmp 1.9.11 Copyright 2001-2005 Paul Davis and others. Copyright 2004-2016 Grame. jackdmp comes with ABSOLUTELY NO WARRANTY This is free software, and you are welcome to redistribute it under certain conditions; see the file COPYING for details JACK server starting in realtime mode with priority 10 self-connect-mode is "Don't restrict self connect requests" creating alsa driver ... hw:0|hw:0|2048|2|44100|0|0|nomon|swmeter|-|16bit configuring for 44100Hz, period = 2048 frames (46.4 ms), buffer = 2 periods ALSA: final selected sample format for capture: 16bit little-endian ALSA: use 2 periods for capture ALSA: final selected sample format for playback: 16bit little-endian ALSA: use 2 periods for playback ==8930== Thread 4: ==8930== Syscall param write(buf) points to uninitialised byte(s) ==8930== at 0x571388D: ??? (syscall-template.S:81) ==8930== by 0x4EA70B3: Jack::JackClientSocket::Write(void*, int) (JackSocket.cpp:233) ==8930== by 0x4E94C62: Jack::JackClientCheckResult::Write(Jack::detail::JackChannelTransactionInterface*) (JackRequest.h:227) ==8930== by 0x4ECDF3A: Jack::JackRequestDecoder::HandleRequest(Jack::detail::JackChannelTransactionInterface*, int) (JackRequestDecoder.cpp:58) ==8930== by 0x4ED4219: Jack::JackSocketServerChannel::Execute() (JackSocketServerChannel.cpp:247) ==8930== by 0x4EA4B63: Jack::JackPosixThread::ThreadHandler(void*) (JackPosixThread.cpp:59) ==8930== by 0x59F5181: start_thread (pthread_create.c:312) ==8930== by 0x572247C: clone (clone.S:111) ==8930== Address 0x41da85e is on thread 4's stack ==8930== in frame #3, created by Jack::JackRequestDecoder::HandleRequest(Jack::detail::JackChannelTransactionInterface*, int) (JackRequestDecoder.cpp:46) ==8930== ==8930== Syscall param write(buf) points to uninitialised byte(s) ==8930== at 0x571388D: ??? (syscall-template.S:81) ==8930== by 0x4EA70B3: Jack::JackClientSocket::Write(void*, int) (JackSocket.cpp:233) ==8930== by 0x4ED619B: Jack::JackClientNotification::Write(Jack::detail::JackChannelTransactionInterface*) (JackRequest.h:1606) ==8930== by 0x4ED5F2E: Jack::JackSocketNotifyChannel::ClientNotify(int, char const*, int, int, char const*, int, int, int*) (JackSocketNotifyChannel.cpp:56) ==8930== by 0x4EB51DF: Jack::JackExternalClient::ClientNotify(int, char const*, int, int, char const*, int, int) (JackExternalClient.cpp:40) ==8930== by 0x4EAFA9A: Jack::JackEngine::ClientNotify(Jack::JackClientInterface*, int, char const*, int, int, char const*, int, int) (JackEngine.cpp:274) ==8930== by 0x4EAFD34: Jack::JackEngine::NotifyAddClient(Jack::JackClientInterface*, char const*, int) (JackEngine.cpp:318) ==8930== by 0x4EB0C99: Jack::JackEngine::ClientExternalOpen(char const*, int, int, int*, int*, int*, int*) (JackEngine.cpp:636) ==8930== by 0x4ED4486: Jack::JackLockedEngine::ClientExternalOpen(char const*, int, int, int*, int*, int*, int*) (JackLockedEngine.h:123) ==8930== by 0x4ED3AD5: Jack::JackSocketServerChannel::ClientAdd(Jack::detail::JackChannelTransactionInterface*, Jack::JackClientOpenRequest*, Jack::JackClientOpenResult*) (JackSocketServerChannel.cpp:132) ==8930== by 0x4ECE0B8: Jack::JackRequestDecoder::HandleRequest(Jack::detail::JackChannelTransactionInterface*, int) (JackRequestDecoder.cpp:73) ==8930== by 0x4ECDFBA: Jack::JackRequestDecoder::HandleRequest(Jack::detail::JackChannelTransactionInterface*, int) (JackRequestDecoder.cpp:63) ==8930== Address 0x41d9ccb is on thread 4's stack ==8930== in frame #3, created by Jack::JackSocketNotifyChannel::ClientNotify(int, char const*, int, int, char const*, int, int, int*) (JackSocketNotifyChannel.cpp:51) ==8930== ==8930== Syscall param write(buf) points to uninitialised byte(s) ==8930== at 0x571388D: ??? (syscall-template.S:81) ==8930== by 0x4EA70B3: Jack::JackClientSocket::Write(void*, int) (JackSocket.cpp:233) ==8930== by 0x4ED633C: Jack::JackClientNotification::Write(Jack::detail::JackChannelTransactionInterface*) (JackRequest.h:1612) ==8930== by 0x4ED5F2E: Jack::JackSocketNotifyChannel::ClientNotify(int, char const*, int, int, char const*, int, int, int*) (JackSocketNotifyChannel.cpp:56) ==8930== by 0x4EB51DF: Jack::JackExternalClient::ClientNotify(int, char const*, int, int, char const*, int, int) (JackExternalClient.cpp:40) ==8930== by 0x4EAFA9A: Jack::JackEngine::ClientNotify(Jack::JackClientInterface*, int, char const*, int, int, char const*, int, int) (JackEngine.cpp:274) ==8930== by 0x4EAFD34: Jack::JackEngine::NotifyAddClient(Jack::JackClientInterface*, char const*, int) (JackEngine.cpp:318) ==8930== by 0x4EB0C99: Jack::JackEngine::ClientExternalOpen(char const*, int, int, int*, int*, int*, int*) (JackEngine.cpp:636) ==8930== by 0x4ED4486: Jack::JackLockedEngine::ClientExternalOpen(char const*, int, int, int*, int*, int*, int*) (JackLockedEngine.h:123) ==8930== by 0x4ED3AD5: Jack::JackSocketServerChannel::ClientAdd(Jack::detail::JackChannelTransactionInterface*, Jack::JackClientOpenRequest*, Jack::JackClientOpenResult*) (JackSocketServerChannel.cpp:132) ==8930== by 0x4ECE0B8: Jack::JackRequestDecoder::HandleRequest(Jack::detail::JackChannelTransactionInterface*, int) (JackRequestDecoder.cpp:73) ==8930== by 0x4ECDFBA: Jack::JackRequestDecoder::HandleRequest(Jack::detail::JackChannelTransactionInterface*, int) (JackRequestDecoder.cpp:63) ==8930== Address 0x41d9d1d is on thread 4's stack ==8930== in frame #3, created by Jack::JackSocketNotifyChannel::ClientNotify(int, char const*, int, int, char const*, int, int, int*) (JackSocketNotifyChannel.cpp:51) ==8930== --- common/JackRequest.h | 63 ++++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 17 deletions(-) diff --git a/common/JackRequest.h b/common/JackRequest.h index 9e3d2b84..3de87a7a 100644 --- a/common/JackRequest.h +++ b/common/JackRequest.h @@ -168,6 +168,7 @@ struct JackClientCheckRequest : public JackRequest JackClientCheckRequest(const char* name, int protocol, int options, int uuid, int open = false) : JackRequest(JackRequest::kClientCheck), fProtocol(protocol), fOptions(options), fUUID(uuid), fOpen(open) { + memset(fName, 0, sizeof(fName)); snprintf(fName, sizeof(fName), "%s", name); } @@ -210,6 +211,7 @@ struct JackClientCheckResult : public JackResult JackClientCheckResult(int32_t result, const char* name, int status) : JackResult(result), fStatus(status) { + memset(fName, 0, sizeof(fName)); snprintf(fName, sizeof(fName), "%s", name); } @@ -246,6 +248,7 @@ struct JackClientOpenRequest : public JackRequest {} JackClientOpenRequest(const char* name, int pid, int uuid): JackRequest(JackRequest::kClientOpen) { + memset(fName, 0, sizeof(fName)); snprintf(fName, sizeof(fName), "%s", name); fPID = pid; fUUID = uuid; @@ -418,8 +421,10 @@ struct JackPortRegisterRequest : public JackRequest JackPortRegisterRequest(int refnum, const char* name, const char* port_type, unsigned int flags, unsigned int buffer_size) : JackRequest(JackRequest::kRegisterPort), fRefNum(refnum), fFlags(flags), fBufferSize(buffer_size) { - strcpy(fName, name); - strcpy(fPortType, port_type); + memset(fName, 0, sizeof(fName)); + memset(fPortType, 0, sizeof(fPortType)); + strncpy(fName, name, sizeof(fName)-1); + strncpy(fPortType, port_type, sizeof(fPortType)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -525,8 +530,10 @@ struct JackPortConnectNameRequest : public JackRequest JackPortConnectNameRequest(int refnum, const char* src_name, const char* dst_name) : JackRequest(JackRequest::kConnectNamePorts), fRefNum(refnum) { - strcpy(fSrc, src_name); - strcpy(fDst, dst_name); + memset(fSrc, 0, sizeof(fSrc)); + memset(fDst, 0, sizeof(fDst)); + strncpy(fSrc, src_name, sizeof(fSrc)-1); + strncpy(fDst, dst_name, sizeof(fDst)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -567,8 +574,10 @@ struct JackPortDisconnectNameRequest : public JackRequest JackPortDisconnectNameRequest(int refnum, const char* src_name, const char* dst_name) : JackRequest(JackRequest::kDisconnectNamePorts), fRefNum(refnum) { - strcpy(fSrc, src_name); - strcpy(fDst, dst_name); + memset(fSrc, 0, sizeof(fSrc)); + memset(fDst, 0, sizeof(fDst)); + strncpy(fSrc, src_name, sizeof(fSrc)-1); + strncpy(fDst, dst_name, sizeof(fDst)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -685,7 +694,8 @@ struct JackPortRenameRequest : public JackRequest JackPortRenameRequest(int refnum, jack_port_id_t port, const char* name) : JackRequest(JackRequest::kPortRename), fRefNum(refnum), fPort(port) { - strcpy(fName, name); + memset(fName, 0, sizeof(fName)); + strncpy(fName, name, sizeof(fName)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -908,6 +918,7 @@ struct JackGetInternalClientNameResult : public JackResult JackGetInternalClientNameResult(int32_t result, const char* name) : JackResult(result) { + memset(fName, 0, sizeof(fName)); snprintf(fName, sizeof(fName), "%s", name); } @@ -943,6 +954,7 @@ struct JackInternalClientHandleRequest : public JackRequest JackInternalClientHandleRequest(int refnum, const char* client_name) : JackRequest(JackRequest::kInternalClientHandle), fRefNum(refnum) { + memset(fName, 0, sizeof(fName)); snprintf(fName, sizeof(fName), "%s", client_name); } @@ -1021,6 +1033,9 @@ struct JackInternalClientLoadRequest : public JackRequest JackInternalClientLoadRequest(int refnum, const char* client_name, const char* so_name, const char* objet_data, int options, int uuid ) : JackRequest(JackRequest::kInternalClientLoad), fRefNum(refnum), fOptions(options), fUUID(uuid) { + memset(fName, 0, sizeof(fName)); + memset(fDllName, 0, sizeof(fDllName)); + memset(fLoadInitName, 0, sizeof(fLoadInitName)); snprintf(fName, sizeof(fName), "%s", client_name); snprintf(fDllName, sizeof(fDllName), "%s", so_name); snprintf(fLoadInitName, sizeof(fLoadInitName), "%s", objet_data); @@ -1203,9 +1218,12 @@ struct JackSessionCommand JackSessionCommand(const char *uuid, const char *clientname, const char *command, jack_session_flags_t flags) { - strncpy(fUUID, uuid, sizeof(fUUID)); - strncpy(fClientName, clientname, sizeof(fClientName)); - strncpy(fCommand, command, sizeof(fCommand)); + memset(fUUID, 0, sizeof(fUUID)); + memset(fClientName, 0, sizeof(fClientName)); + memset(fCommand, 0, sizeof(fCommand)); + strncpy(fUUID, uuid, sizeof(fUUID)-1); + strncpy(fClientName, clientname, sizeof(fClientName)-1); + strncpy(fCommand, command, sizeof(fCommand)-1); fFlags = flags; } }; @@ -1315,11 +1333,13 @@ struct JackSessionNotifyRequest : public JackRequest JackSessionNotifyRequest(int refnum, const char* path, jack_session_event_type_t type, const char* dst) : JackRequest(JackRequest::kSessionNotify), fEventType(type), fRefNum(refnum) { + memset(fPath, 0, sizeof(fPath)); + memset(fDst, 0, sizeof(fDst)); snprintf(fPath, sizeof(fPath), "%s", path); + fPath[JACK_MESSAGE_SIZE] = 0; if (dst) { snprintf(fDst, sizeof(fDst), "%s", dst); - } else { - fDst[0] = '\0'; + fDst[JACK_CLIENT_NAME_SIZE] = 0; } } @@ -1384,6 +1404,7 @@ struct JackClientNameResult : public JackResult JackClientNameResult(int32_t result, const char* name) : JackResult(result) { + memset(fName, 0, sizeof(fName)); snprintf(fName, sizeof(fName), "%s", name); } @@ -1412,6 +1433,7 @@ struct JackUUIDResult : public JackResult JackUUIDResult(int32_t result, const char* uuid) : JackResult(result) { + memset(fUUID, 0, sizeof(fUUID)); snprintf(fUUID, sizeof(fUUID), "%s", uuid); } @@ -1441,7 +1463,8 @@ struct JackGetUUIDRequest : public JackRequest JackGetUUIDRequest(const char* client_name) : JackRequest(JackRequest::kGetUUIDByClient) { - strncpy(fName, client_name, sizeof(fName)); + memset(fName, 0, sizeof(fName)); + strncpy(fName, client_name, sizeof(fName)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -1472,7 +1495,8 @@ struct JackGetClientNameRequest : public JackRequest JackGetClientNameRequest(const char* uuid) : JackRequest(JackRequest::kGetClientByUUID) { - strncpy(fUUID, uuid, sizeof(fUUID)); + memset(fUUID, 0, sizeof(fUUID)); + strncpy(fUUID, uuid, sizeof(fUUID)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -1505,8 +1529,10 @@ struct JackReserveNameRequest : public JackRequest JackReserveNameRequest(int refnum, const char *name, const char* uuid) : JackRequest(JackRequest::kReserveClientName), fRefNum(refnum) { - strncpy(fName, name, sizeof(fName)); - strncpy(fUUID, uuid, sizeof(fUUID)); + memset(fName, 0, sizeof(fName)); + memset(fUUID, 0, sizeof(fUUID)); + strncpy(fName, name, sizeof(fName)-1); + strncpy(fUUID, uuid, sizeof(fUUID)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -1541,7 +1567,8 @@ struct JackClientHasSessionCallbackRequest : public JackRequest JackClientHasSessionCallbackRequest(const char *name) : JackRequest(JackRequest::kClientHasSessionCallback) { - strncpy(fName, name, sizeof(fName)); + memset(fName, 0, sizeof(fName)); + strncpy(fName, name, sizeof(fName)-1); } int Read(detail::JackChannelTransactionInterface* trans) @@ -1582,6 +1609,8 @@ struct JackClientNotification JackClientNotification(const char* name, int refnum, int notify, int sync, const char* message, int value1, int value2) : fRefNum(refnum), fNotify(notify), fValue1(value1), fValue2(value2), fSync(sync) { + memset(fName, 0, sizeof(fName)); + memset(fMessage, 0, sizeof(fMessage)); snprintf(fName, sizeof(fName), "%s", name); snprintf(fMessage, sizeof(fMessage), "%s", message); fSize = Size(); From 9e5d1909d156ff730cd3d0cb10cdbe489f7004ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Tue, 17 May 2016 16:04:44 -0400 Subject: [PATCH 3/4] Fix initialization of members from default constructors. --- common/JackRequest.h | 140 ++++++++++++++++++++++++++++--------------- 1 file changed, 92 insertions(+), 48 deletions(-) diff --git a/common/JackRequest.h b/common/JackRequest.h index 3de87a7a..facb664b 100644 --- a/common/JackRequest.h +++ b/common/JackRequest.h @@ -163,8 +163,10 @@ struct JackClientCheckRequest : public JackRequest int fUUID; int fOpen; - JackClientCheckRequest() - {} + JackClientCheckRequest() : fProtocol(0), fOptions(0), fUUID(0), fOpen(0) + { + memset(fName, 0, sizeof(fName)); + } JackClientCheckRequest(const char* name, int protocol, int options, int uuid, int open = false) : JackRequest(JackRequest::kClientCheck), fProtocol(protocol), fOptions(options), fUUID(uuid), fOpen(open) { @@ -207,7 +209,9 @@ struct JackClientCheckResult : public JackResult int fStatus; JackClientCheckResult(): JackResult(), fStatus(0) - {} + { + memset(fName, 0, sizeof(fName)); + } JackClientCheckResult(int32_t result, const char* name, int status) : JackResult(result), fStatus(status) { @@ -244,8 +248,10 @@ struct JackClientOpenRequest : public JackRequest int fUUID; char fName[JACK_CLIENT_NAME_SIZE+1]; - JackClientOpenRequest() - {} + JackClientOpenRequest() : fPID(0), fUUID(0) + { + memset(fName, 0, sizeof(fName)); + } JackClientOpenRequest(const char* name, int pid, int uuid): JackRequest(JackRequest::kClientOpen) { memset(fName, 0, sizeof(fName)); @@ -321,7 +327,7 @@ struct JackClientCloseRequest : public JackRequest int fRefNum; - JackClientCloseRequest() + JackClientCloseRequest() : fRefNum(0) {} JackClientCloseRequest(int refnum): JackRequest(JackRequest::kClientClose), fRefNum(refnum) {} @@ -351,7 +357,7 @@ struct JackActivateRequest : public JackRequest int fRefNum; int fIsRealTime; - JackActivateRequest() + JackActivateRequest() : fRefNum(0), fIsRealTime(0) {} JackActivateRequest(int refnum, int is_real_time) : JackRequest(JackRequest::kActivateClient), fRefNum(refnum), fIsRealTime(is_real_time) @@ -383,7 +389,7 @@ struct JackDeactivateRequest : public JackRequest int fRefNum; - JackDeactivateRequest() + JackDeactivateRequest() : fRefNum(0) {} JackDeactivateRequest(int refnum): JackRequest(JackRequest::kDeactivateClient), fRefNum(refnum) {} @@ -416,8 +422,11 @@ struct JackPortRegisterRequest : public JackRequest unsigned int fFlags; unsigned int fBufferSize; - JackPortRegisterRequest() - {} + JackPortRegisterRequest() : fRefNum(0), fFlags(0), fBufferSize(0) + { + memset(fName, 0, sizeof(fName)); + memset(fPortType, 0, sizeof(fPortType)); + } JackPortRegisterRequest(int refnum, const char* name, const char* port_type, unsigned int flags, unsigned int buffer_size) : JackRequest(JackRequest::kRegisterPort), fRefNum(refnum), fFlags(flags), fBufferSize(buffer_size) { @@ -489,7 +498,7 @@ struct JackPortUnRegisterRequest : public JackRequest int fRefNum; jack_port_id_t fPortIndex; - JackPortUnRegisterRequest() + JackPortUnRegisterRequest() : fRefNum(0), fPortIndex(0) {} JackPortUnRegisterRequest(int refnum, jack_port_id_t index) : JackRequest(JackRequest::kUnRegisterPort), fRefNum(refnum), fPortIndex(index) @@ -525,8 +534,11 @@ struct JackPortConnectNameRequest : public JackRequest char fSrc[REAL_JACK_PORT_NAME_SIZE+1]; // port full name char fDst[REAL_JACK_PORT_NAME_SIZE+1]; // port full name - JackPortConnectNameRequest() - {} + JackPortConnectNameRequest() : fRefNum(0) + { + memset(fSrc, 0, sizeof(fSrc)); + memset(fDst, 0, sizeof(fDst)); + } JackPortConnectNameRequest(int refnum, const char* src_name, const char* dst_name) : JackRequest(JackRequest::kConnectNamePorts), fRefNum(refnum) { @@ -569,8 +581,11 @@ struct JackPortDisconnectNameRequest : public JackRequest char fSrc[REAL_JACK_PORT_NAME_SIZE+1]; // port full name char fDst[REAL_JACK_PORT_NAME_SIZE+1]; // port full name - JackPortDisconnectNameRequest() - {} + JackPortDisconnectNameRequest() : fRefNum(0) + { + memset(fSrc, 0, sizeof(fSrc)); + memset(fDst, 0, sizeof(fDst)); + } JackPortDisconnectNameRequest(int refnum, const char* src_name, const char* dst_name) : JackRequest(JackRequest::kDisconnectNamePorts), fRefNum(refnum) { @@ -613,7 +628,7 @@ struct JackPortConnectRequest : public JackRequest jack_port_id_t fSrc; jack_port_id_t fDst; - JackPortConnectRequest() + JackPortConnectRequest() : fRefNum(0), fSrc(0), fDst(0) {} JackPortConnectRequest(int refnum, jack_port_id_t src, jack_port_id_t dst) : JackRequest(JackRequest::kConnectPorts), fRefNum(refnum), fSrc(src), fDst(dst) @@ -651,7 +666,7 @@ struct JackPortDisconnectRequest : public JackRequest jack_port_id_t fSrc; jack_port_id_t fDst; - JackPortDisconnectRequest() + JackPortDisconnectRequest() : fRefNum(0), fSrc(0), fDst(0) {} JackPortDisconnectRequest(int refnum, jack_port_id_t src, jack_port_id_t dst) : JackRequest(JackRequest::kDisconnectPorts), fRefNum(refnum), fSrc(src), fDst(dst) @@ -689,8 +704,10 @@ struct JackPortRenameRequest : public JackRequest jack_port_id_t fPort; char fName[JACK_PORT_NAME_SIZE + 1]; // port short name - JackPortRenameRequest() - {} + JackPortRenameRequest() : fRefNum(0), fPort(0) + { + memset(fName, 0, sizeof(fName)); + } JackPortRenameRequest(int refnum, jack_port_id_t port, const char* name) : JackRequest(JackRequest::kPortRename), fRefNum(refnum), fPort(port) { @@ -729,7 +746,7 @@ struct JackSetBufferSizeRequest : public JackRequest jack_nframes_t fBufferSize; - JackSetBufferSizeRequest() + JackSetBufferSizeRequest() : fBufferSize(0) {} JackSetBufferSizeRequest(jack_nframes_t buffer_size) : JackRequest(JackRequest::kSetBufferSize), fBufferSize(buffer_size) @@ -759,7 +776,7 @@ struct JackSetFreeWheelRequest : public JackRequest int fOnOff; - JackSetFreeWheelRequest() + JackSetFreeWheelRequest() : fOnOff(0) {} JackSetFreeWheelRequest(int onoff) : JackRequest(JackRequest::kSetFreeWheel), fOnOff(onoff) @@ -816,7 +833,7 @@ struct JackReleaseTimebaseRequest : public JackRequest int fRefNum; - JackReleaseTimebaseRequest() + JackReleaseTimebaseRequest() : fRefNum(0) {} JackReleaseTimebaseRequest(int refnum) : JackRequest(JackRequest::kReleaseTimebase), fRefNum(refnum) @@ -848,7 +865,7 @@ struct JackSetTimebaseCallbackRequest : public JackRequest int fRefNum; int fConditionnal; - JackSetTimebaseCallbackRequest() + JackSetTimebaseCallbackRequest() : fRefNum(0), fConditionnal(0) {} JackSetTimebaseCallbackRequest(int refnum, int conditional) : JackRequest(JackRequest::kSetTimebaseCallback), fRefNum(refnum), fConditionnal(conditional) @@ -881,7 +898,7 @@ struct JackGetInternalClientNameRequest : public JackRequest int fRefNum; int fIntRefNum; - JackGetInternalClientNameRequest() + JackGetInternalClientNameRequest() : fRefNum(0), fIntRefNum(0) {} JackGetInternalClientNameRequest(int refnum, int int_ref) : JackRequest(JackRequest::kGetInternalClientName), fRefNum(refnum), fIntRefNum(int_ref) @@ -914,7 +931,9 @@ struct JackGetInternalClientNameResult : public JackResult char fName[JACK_CLIENT_NAME_SIZE+1]; JackGetInternalClientNameResult(): JackResult() - {} + { + memset(fName, 0, sizeof(fName)); + } JackGetInternalClientNameResult(int32_t result, const char* name) : JackResult(result) { @@ -949,8 +968,10 @@ struct JackInternalClientHandleRequest : public JackRequest int fRefNum; char fName[JACK_CLIENT_NAME_SIZE+1]; - JackInternalClientHandleRequest() - {} + JackInternalClientHandleRequest() : fRefNum(0) + { + memset(fName, 0, sizeof(fName)); + } JackInternalClientHandleRequest(int refnum, const char* client_name) : JackRequest(JackRequest::kInternalClientHandle), fRefNum(refnum) { @@ -985,7 +1006,7 @@ struct JackInternalClientHandleResult : public JackResult int fStatus; int fIntRefNum; - JackInternalClientHandleResult(): JackResult() + JackInternalClientHandleResult(): JackResult(), fStatus(0), fIntRefNum(0) {} JackInternalClientHandleResult(int32_t result, int status, int int_ref) : JackResult(result), fStatus(status), fIntRefNum(int_ref) @@ -1028,8 +1049,12 @@ struct JackInternalClientLoadRequest : public JackRequest int fOptions; int fUUID; - JackInternalClientLoadRequest() - {} + JackInternalClientLoadRequest() : fRefNum(0), fOptions(0), fUUID(0) + { + memset(fName, 0, sizeof(fName)); + memset(fDllName, 0, sizeof(fDllName)); + memset(fLoadInitName, 0, sizeof(fLoadInitName)); + } JackInternalClientLoadRequest(int refnum, const char* client_name, const char* so_name, const char* objet_data, int options, int uuid ) : JackRequest(JackRequest::kInternalClientLoad), fRefNum(refnum), fOptions(options), fUUID(uuid) { @@ -1077,7 +1102,7 @@ struct JackInternalClientLoadResult : public JackResult int fStatus; int fIntRefNum; - JackInternalClientLoadResult(): JackResult() + JackInternalClientLoadResult(): JackResult(), fStatus(0), fIntRefNum(0) {} JackInternalClientLoadResult(int32_t result, int status, int int_ref) : JackResult(result), fStatus(status), fIntRefNum(int_ref) @@ -1112,7 +1137,7 @@ struct JackInternalClientUnloadRequest : public JackRequest int fRefNum; int fIntRefNum; - JackInternalClientUnloadRequest() + JackInternalClientUnloadRequest() : fRefNum(0), fIntRefNum(0) {} JackInternalClientUnloadRequest(int refnum, int int_ref) : JackRequest(JackRequest::kInternalClientUnload), fRefNum(refnum), fIntRefNum(int_ref) @@ -1144,7 +1169,7 @@ struct JackInternalClientUnloadResult : public JackResult int fStatus; - JackInternalClientUnloadResult(): JackResult() + JackInternalClientUnloadResult(): JackResult(), fStatus(0) {} JackInternalClientUnloadResult(int32_t result, int status) : JackResult(result), fStatus(status) @@ -1178,7 +1203,7 @@ struct JackClientNotificationRequest : public JackRequest int fNotify; int fValue; - JackClientNotificationRequest() + JackClientNotificationRequest() : fRefNum(0), fNotify(0), fValue(0) {} JackClientNotificationRequest(int refnum, int notify, int value) : JackRequest(JackRequest::kNotification), fRefNum(refnum), fNotify(notify), fValue(value) @@ -1213,9 +1238,12 @@ struct JackSessionCommand char fCommand[JACK_SESSION_COMMAND_SIZE]; jack_session_flags_t fFlags; - JackSessionCommand() - {} - + JackSessionCommand() : fFlags(JackSessionSaveError) + { + memset(fUUID, 0, sizeof(fUUID)); + memset(fClientName, 0, sizeof(fClientName)); + memset(fCommand, 0, sizeof(fCommand)); + } JackSessionCommand(const char *uuid, const char *clientname, const char *command, jack_session_flags_t flags) { memset(fUUID, 0, sizeof(fUUID)); @@ -1328,7 +1356,7 @@ struct JackSessionNotifyRequest : public JackRequest jack_session_event_type_t fEventType; int fRefNum; - JackSessionNotifyRequest() + JackSessionNotifyRequest() : fEventType(JackSessionSave), fRefNum(0) {} JackSessionNotifyRequest(int refnum, const char* path, jack_session_event_type_t type, const char* dst) : JackRequest(JackRequest::kSessionNotify), fEventType(type), fRefNum(refnum) @@ -1370,7 +1398,7 @@ struct JackSessionReplyRequest : public JackRequest { int fRefNum; - JackSessionReplyRequest() + JackSessionReplyRequest() : fRefNum(0) {} JackSessionReplyRequest(int refnum) @@ -1400,7 +1428,9 @@ struct JackClientNameResult : public JackResult char fName[JACK_CLIENT_NAME_SIZE+1]; JackClientNameResult(): JackResult() - {} + { + memset(fName, 0, sizeof(fName)); + } JackClientNameResult(int32_t result, const char* name) : JackResult(result) { @@ -1429,7 +1459,9 @@ struct JackUUIDResult : public JackResult char fUUID[JACK_UUID_SIZE]; JackUUIDResult(): JackResult() - {} + { + memset(fUUID, 0, sizeof(fUUID)); + } JackUUIDResult(int32_t result, const char* uuid) : JackResult(result) { @@ -1458,7 +1490,9 @@ struct JackGetUUIDRequest : public JackRequest char fName[JACK_CLIENT_NAME_SIZE+1]; JackGetUUIDRequest() - {} + { + memset(fName, 0, sizeof(fName)); + } JackGetUUIDRequest(const char* client_name) : JackRequest(JackRequest::kGetUUIDByClient) @@ -1490,7 +1524,9 @@ struct JackGetClientNameRequest : public JackRequest char fUUID[JACK_UUID_SIZE]; JackGetClientNameRequest() - {} + { + memset(fUUID, 0, sizeof(fUUID)); + } JackGetClientNameRequest(const char* uuid) : JackRequest(JackRequest::kGetClientByUUID) @@ -1523,8 +1559,11 @@ struct JackReserveNameRequest : public JackRequest char fName[JACK_CLIENT_NAME_SIZE+1]; char fUUID[JACK_UUID_SIZE]; - JackReserveNameRequest() - {} + JackReserveNameRequest() : fRefNum(0) + { + memset(fName, 0, sizeof(fName)); + memset(fUUID, 0, sizeof(fUUID)); + } JackReserveNameRequest(int refnum, const char *name, const char* uuid) : JackRequest(JackRequest::kReserveClientName), fRefNum(refnum) @@ -1562,7 +1601,9 @@ struct JackClientHasSessionCallbackRequest : public JackRequest char fName[JACK_CLIENT_NAME_SIZE+1]; JackClientHasSessionCallbackRequest() - {} + { + memset(fName, 0, sizeof(fName)); + } JackClientHasSessionCallbackRequest(const char *name) : JackRequest(JackRequest::kClientHasSessionCallback) @@ -1604,8 +1645,11 @@ struct JackClientNotification int fSync; char fMessage[JACK_MESSAGE_SIZE+1]; - JackClientNotification(): fNotify(-1), fValue1(-1), fValue2(-1) - {} + JackClientNotification(): fSize(0), fRefNum(0), fNotify(-1), fValue1(-1), fValue2(-1), fSync(0) + { + memset(fName, 0, sizeof(fName)); + memset(fMessage, 0, sizeof(fMessage)); + } JackClientNotification(const char* name, int refnum, int notify, int sync, const char* message, int value1, int value2) : fRefNum(refnum), fNotify(notify), fValue1(value1), fValue2(value2), fSync(sync) { From fd48059f9bd4f78d0c350fdc30cd37363c09365f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Tue, 17 May 2016 15:45:38 -0400 Subject: [PATCH 4/4] Fix duplicate instruction. --- common/JackRequest.h | 1 - 1 file changed, 1 deletion(-) diff --git a/common/JackRequest.h b/common/JackRequest.h index facb664b..0262acbc 100644 --- a/common/JackRequest.h +++ b/common/JackRequest.h @@ -1064,7 +1064,6 @@ struct JackInternalClientLoadRequest : public JackRequest snprintf(fName, sizeof(fName), "%s", client_name); snprintf(fDllName, sizeof(fDllName), "%s", so_name); snprintf(fLoadInitName, sizeof(fLoadInitName), "%s", objet_data); - snprintf(fLoadInitName, sizeof(fLoadInitName), "%s", objet_data); } int Read(detail::JackChannelTransactionInterface* trans)