diff --git a/src/Cedar/IPC.c b/src/Cedar/IPC.c index 96de8962..47ad93cb 100644 --- a/src/Cedar/IPC.c +++ b/src/Cedar/IPC.c @@ -1077,8 +1077,14 @@ BUF *IPCBuildDhcpRequestOptions(IPC *ipc, DHCP_OPTION_LIST *opt) // Hostname if (IsEmptyStr(opt->Hostname) == false) { + UCHAR client_id[MAX_HOST_NAME_LEN + 32]; + UCHAR macstr[30]; + MacToStr(macstr, sizeof(macstr), ipc->MacAddress); + + Format(client_id, sizeof(client_id), "%s/%s", opt->Hostname, macstr); + Add(o, NewDhcpOption(DHCP_ID_HOST_NAME, opt->Hostname, StrLen(opt->Hostname))); - Add(o, NewDhcpOption(DHCP_ID_CLIENT_ID, opt->Hostname, StrLen(opt->Hostname))); + Add(o, NewDhcpOption(DHCP_ID_CLIENT_ID, client_id, StrLen(client_id))); } else // Client MAC Address { diff --git a/src/Cedar/Proto_PPP.c b/src/Cedar/Proto_PPP.c index 811cad74..9c6be569 100644 --- a/src/Cedar/Proto_PPP.c +++ b/src/Cedar/Proto_PPP.c @@ -257,9 +257,9 @@ void PPPThread(THREAD *thread, void *param) case PPP_EAP_TYPE_IDENTITY: default: // We treat the unspecified protocol as the IDENTITY protocol p->Eap_Protocol = PPP_EAP_TYPE_IDENTITY; - lcpEap = BuildEAPPacketEx(PPP_EAP_CODE_REQUEST, p->Eap_PacketId++, PPP_EAP_TYPE_IDENTITY, sizeof(welcomeMessage)); + lcpEap = BuildEAPPacketEx(PPP_EAP_CODE_REQUEST, p->Eap_PacketId++, PPP_EAP_TYPE_IDENTITY, StrLen(welcomeMessage) + 1); eapPacket = lcpEap->Data; - Copy(eapPacket->Data, welcomeMessage, sizeof(welcomeMessage)); + Copy(eapPacket->Data, welcomeMessage, StrLen(welcomeMessage)); PPPSetStatus(p, PPP_STATUS_AUTHENTICATING); if (!PPPSendAndRetransmitRequest(p, PPP_PROTOCOL_EAP, lcpEap)) { @@ -3447,7 +3447,7 @@ void FreePPPSession(PPP_SESSION *p) } if (p->Eap_TlsCtx.CachedBufferSend != NULL) { - Free(p->Eap_TlsCtx.CachedBufferRecv); + Free(p->Eap_TlsCtx.CachedBufferSend); } if (p->Eap_TlsCtx.SslPipe != NULL) {