【发布时间】:2021-12-01 16:31:12
【问题描述】:
在下面来自 apache 服务器 ajp_msg.c 的代码中,任何想法 msg->max_size 来自?
我正在尝试修复以下错误消息:
ajp_msg_append_cvt_string(): BufferOverflowException 4 8186
**
* Add a String in AJP message, and transform the String in ASCII
* if convert is set and we're on an EBCDIC machine
*
* @param msg AJP Message to get value from
* @param value Pointer to String
* @param convert When set told to convert String to ASCII
* @return APR_SUCCESS or error
*/
apr_status_t ajp_msg_append_string_ex(ajp_msg_t *msg, const char *value,
int convert)
{
apr_size_t len;
if (value == NULL) {
return(ajp_msg_append_uint16(msg, 0xFFFF));
}
len = strlen(value);
if ((msg->len + len + 3) > msg->max_size) {
return ajp_log_overflow(msg, "ajp_msg_append_cvt_string");
}
/* ignore error - we checked once */
ajp_msg_append_uint16(msg, (apr_uint16_t)len);
/* We checked for space !! */
memcpy(msg->buf + msg->len, value, len + 1); /* including \0 */
if (convert) {
/* convert from EBCDIC if needed */
ap_xlate_proto_to_ascii((char *)msg->buf + msg->len, len + 1);
}
msg->len += len + 1;
return APR_SUCCESS;
}
【问题讨论】: