Compare commits
No commits in common. 'c9-beta' and 'c9' have entirely different histories.
@ -1 +1 @@
|
|||||||
a7b8b581a32b649cbf5bc79926f97d59919c5b79 SOURCES/OpenIPMI-2.0.36.tar.gz
|
73d7dce4312b006983b11367e4a43d4ec52cf888 SOURCES/OpenIPMI-2.0.32.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
SOURCES/OpenIPMI-2.0.36.tar.gz
|
SOURCES/OpenIPMI-2.0.32.tar.gz
|
||||||
|
@ -0,0 +1,73 @@
|
|||||||
|
diff --git a/lanserv/lanserv_ipmi.c b/lanserv/lanserv_ipmi.c
|
||||||
|
index ccd60015..e707454e 100644
|
||||||
|
--- a/lanserv/lanserv_ipmi.c
|
||||||
|
+++ b/lanserv/lanserv_ipmi.c
|
||||||
|
@@ -882,6 +882,12 @@ handle_temp_session(lanserv_data_t *lan, msg_t *msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
auth = msg->data[0] & 0xf;
|
||||||
|
+ if (auth >= MAX_IPMI_AUTHS) {
|
||||||
|
+ lan->sysinfo->log(lan->sysinfo, NEW_SESSION_FAILED, msg,
|
||||||
|
+ "Activate session failed: Invalid auth: 0x%x", auth);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
user = &(lan->users[user_idx]);
|
||||||
|
if (! (user->valid)) {
|
||||||
|
lan->sysinfo->log(lan->sysinfo, NEW_SESSION_FAILED, msg,
|
||||||
|
@@ -3016,17 +3022,33 @@ ipmi_handle_lan_msg(lanserv_data_t *lan,
|
||||||
|
{
|
||||||
|
msg_t msg;
|
||||||
|
|
||||||
|
+ memset(&msg, 0, sizeof(msg));
|
||||||
|
+
|
||||||
|
msg.src_addr = from_addr;
|
||||||
|
msg.src_len = from_len;
|
||||||
|
|
||||||
|
msg.oem_data = 0;
|
||||||
|
|
||||||
|
+ msg.channel = lan->channel.channel_num;
|
||||||
|
+ msg.orig_channel = &lan->channel;
|
||||||
|
+
|
||||||
|
+ /*
|
||||||
|
+ * Initialize the data so the log won't crash if it gets called, and
|
||||||
|
+ * so the log might have useful info.
|
||||||
|
+ */
|
||||||
|
+ msg.data = data;
|
||||||
|
+ msg.len = len;
|
||||||
|
+
|
||||||
|
if (len < 5) {
|
||||||
|
lan->sysinfo->log(lan->sysinfo, LAN_ERR, &msg,
|
||||||
|
"LAN msg failure: message too short");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* Length is at least marginally correct, skip the first part now. */
|
||||||
|
+ msg.data = data + 5;
|
||||||
|
+ msg.len = len - 5;
|
||||||
|
+
|
||||||
|
if (data[2] != 0xff) {
|
||||||
|
lan->sysinfo->log(lan->sysinfo, LAN_ERR, &msg,
|
||||||
|
"LAN msg failure: seq not ff");
|
||||||
|
@@ -3034,17 +3056,15 @@ ipmi_handle_lan_msg(lanserv_data_t *lan,
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.authtype = data[4];
|
||||||
|
- msg.data = data+5;
|
||||||
|
- msg.len = len - 5;
|
||||||
|
- msg.channel = lan->channel.channel_num;
|
||||||
|
- msg.orig_channel = &lan->channel;
|
||||||
|
-
|
||||||
|
if (msg.authtype == IPMI_AUTHTYPE_RMCP_PLUS) {
|
||||||
|
ipmi_handle_rmcpp_msg(lan, &msg);
|
||||||
|
+ } else if (msg.authtype >= MAX_IPMI_AUTHS) {
|
||||||
|
+ lan->sysinfo->log(lan->sysinfo, LAN_ERR, &msg,
|
||||||
|
+ "LAN msg failure: Invalid authtype: %d", data[4]);
|
||||||
|
+ return;
|
||||||
|
} else {
|
||||||
|
ipmi_handle_rmcp_msg(lan, &msg);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
Loading…
Reference in new issue