+libcec (1.2-1) unstable; urgency=low
+
+ * bugfixes:
+ * pass the deck_control command to libcec listeners
+ * check whether the initiator is valid in CCECProcessor::ParseCommand().
+ fixes possible segfault when parsing invalid data
+
+ -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sat, 12 Nov 2011 13:36:00 +0100
+
libcec (1.1-3) unstable; urgency=low
* fixed return value in CCECProcessor::SetStreamPath(), which prevented
-AC_INIT([libcec], 1:1:0)
+AC_INIT([libcec], 1:2:0)
AM_INIT_AUTOMAKE(AC_PACKAGE_NAME, AC_PACKAGE_VERSION)
AC_PROG_CXX
+libcec (1.2-1) unstable; urgency=low
+
+ * bugfixes:
+ * pass the deck_control command to libcec listeners
+ * check whether the initiator is valid in CCECProcessor::ParseCommand().
+ fixes possible segfault when parsing invalid data
+
+ -- Pulse-Eight Packaging <packaging@pulse-eight.com> Sat, 12 Nov 2011 13:36:00 +0100
+
libcec (1.1-3) unstable; urgency=low
* fixed return value in CCECProcessor::SetStreamPath(), which prevented
#define CEC_MIN_LIB_VERSION 1
#define CEC_LIB_VERSION_MAJOR 1
-#define CEC_LIB_VERSION_MINOR 1
+#define CEC_LIB_VERSION_MINOR 2
#ifdef __cplusplus
};
code == MSGCODE_TRANSMIT_FAILED_TIMEOUT_LINE);
}
-void CCECAdapterMessage::push_escaped(int16_t byte)
+void CCECAdapterMessage::push_escaped(uint8_t byte)
{
if (byte >= MSGESC && byte != MSGSTART)
{
push_back(MSGESC);
- push_back((uint8_t) (byte - ESCOFFSET));
+ push_back(byte - ESCOFFSET);
}
else
- push_back((uint8_t) byte);
+ push_back(byte);
}
CAdapterCommunication::CAdapterCommunication(CLibCEC *controller) :
cec_logical_address initiator(void) const { return packet.size >= 2 ? (cec_logical_address) (packet.at(1) >> 4) : CECDEVICE_UNKNOWN; };
cec_logical_address destination(void) const { return packet.size >= 2 ? (cec_logical_address) (packet.at(1) & 0xF) : CECDEVICE_UNKNOWN; };
bool is_error(void) const;
- void push_escaped(int16_t byte);
+ void push_escaped(uint8_t byte);
cec_datapacket packet;
cec_adapter_message_state state;
m_logicalAddresses.clear();
m_logicalAddresses.set(iLogicalAddress);
m_types.clear();
- for (int iPtr = 0; iPtr < 16; iPtr++)
+ for (int iPtr = 0; iPtr <= 16; iPtr++)
m_busDevices[iPtr] = new CCECBusDevice(this, (cec_logical_address) iPtr, iPtr == iLogicalAddress ? iPhysicalAddress : 0);
}
dataStr.AppendFormat(":%02x", (unsigned int)command.parameters[iPtr]);
m_controller->AddLog(CEC_LOG_TRAFFIC, dataStr.c_str());
- if (!m_bMonitor)
+ if (!m_bMonitor && command.initiator >= CECDEVICE_TV && command.initiator <= CECDEVICE_BROADCAST)
m_busDevices[(uint8_t)command.initiator]->HandleCommand(command);
}
break;
case CEC_OPCODE_DECK_CONTROL:
HandleDeckControl(command);
+ /* pass to listeners */
+ m_busDevice->GetProcessor()->AddCommand(command);
break;
case CEC_OPCODE_MENU_REQUEST:
HandleMenuRequest(command);