summaryrefslogtreecommitdiff
path: root/accel-pppd/ctrl/sstp/sstp.c
diff options
context:
space:
mode:
Diffstat (limited to 'accel-pppd/ctrl/sstp/sstp.c')
-rw-r--r--accel-pppd/ctrl/sstp/sstp.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/accel-pppd/ctrl/sstp/sstp.c b/accel-pppd/ctrl/sstp/sstp.c
index 1796488e..b6c2ce3a 100644
--- a/accel-pppd/ctrl/sstp/sstp.c
+++ b/accel-pppd/ctrl/sstp/sstp.c
@@ -217,6 +217,13 @@ static inline void *buf_put_data(struct buffer_t *buf, const void *data, int len
return tmp;
}
+static inline void *buf_put_zero(struct buffer_t *buf, int len)
+{
+ void *tmp = buf_put(buf, len);
+ memset(tmp, 0, len);
+ return tmp;
+}
+
static inline void *buf_push(struct buffer_t *buf, int len)
{
buf->head -= len;
@@ -863,7 +870,8 @@ static int sstp_send_msg_call_connect_ack(struct sstp_conn_t *conn)
return -1;
}
- msg = buf_put(buf, sizeof(*msg));
+ msg = buf_put_zero(buf, sizeof(*msg));
+
INIT_SSTP_CTRL_HDR(&msg->hdr, SSTP_MSG_CALL_CONNECT_ACK, 1, sizeof(*msg));
INIT_SSTP_ATTR_HDR(&msg->attr.hdr, SSTP_ATTRIB_CRYPTO_BINDING_REQ, sizeof(msg->attr));
msg->attr.hash_protocol_bitmask = conf_hash_protocol;
@@ -890,7 +898,8 @@ static int sstp_send_msg_call_connect_nak(struct sstp_conn_t *conn)
return -1;
}
- msg = buf_put(buf, sizeof(*msg));
+ msg = buf_put_zero(buf, sizeof(*msg));
+
INIT_SSTP_CTRL_HDR(&msg->hdr, SSTP_MSG_CALL_CONNECT_NAK, 1, sizeof(*msg));
INIT_SSTP_ATTR_HDR(&msg->attr.hdr, SSTP_ATTRIB_STATUS_INFO, sizeof(msg->attr));
msg->attr.attrib_id = SSTP_ATTRIB_ENCAPSULATED_PROTOCOL_ID;
@@ -916,7 +925,8 @@ static int sstp_send_msg_call_abort(struct sstp_conn_t *conn)
return -1;
}
- msg = buf_put(buf, sizeof(*msg));
+ msg = buf_put_zero(buf, sizeof(*msg));
+
INIT_SSTP_CTRL_HDR(&msg->hdr, SSTP_MSG_CALL_ABORT, 1, sizeof(*msg));
INIT_SSTP_ATTR_HDR(&msg->attr.hdr, SSTP_ATTRIB_STATUS_INFO, sizeof(msg->attr));
msg->attr.attrib_id = SSTP_ATTRIB_STATUS_INFO;
@@ -941,7 +951,8 @@ static int sstp_send_msg_call_disconnect(struct sstp_conn_t *conn)
return -1;
}
- msg = buf_put(buf, sizeof(*msg));
+ msg = buf_put_zero(buf, sizeof(*msg));
+
INIT_SSTP_CTRL_HDR(&msg->hdr, SSTP_MSG_CALL_DISCONNECT, 1, sizeof(*msg));
INIT_SSTP_ATTR_HDR(&msg->attr.hdr, SSTP_ATTRIB_STATUS_INFO, sizeof(msg->attr));
msg->attr.attrib_id = SSTP_ATTRIB_NO_ERROR;
@@ -965,7 +976,8 @@ static int sstp_send_msg_call_disconnect_ack(struct sstp_conn_t *conn)
return -1;
}
- msg = buf_put(buf, sizeof(*msg));
+ msg = buf_put_zero(buf, sizeof(*msg));
+
INIT_SSTP_CTRL_HDR(&msg->hdr, SSTP_MSG_CALL_DISCONNECT_ACK, 0, sizeof(*msg));
return sstp_send(conn, buf);
@@ -986,7 +998,8 @@ static int sstp_send_msg_echo_request(struct sstp_conn_t *conn)
return -1;
}
- msg = buf_put(buf, sizeof(*msg));
+ msg = buf_put_zero(buf, sizeof(*msg));
+
INIT_SSTP_CTRL_HDR(&msg->hdr, SSTP_MSG_ECHO_REQUEST, 0, sizeof(*msg));
return sstp_send(conn, buf);
@@ -1007,7 +1020,8 @@ static int sstp_send_msg_echo_response(struct sstp_conn_t *conn)
return -1;
}
- msg = buf_put(buf, sizeof(*msg));
+ msg = buf_put_zero(buf, sizeof(*msg));
+
INIT_SSTP_CTRL_HDR(&msg->hdr, SSTP_MSG_ECHO_RESPONSE, 0, sizeof(*msg));
return sstp_send(conn, buf);