【问题标题】:ajp_msg_append_cvt_string(): BufferOverflowException on apache 2.4ajp_msg_append_cvt_string(): Apache 2.4 上的 BufferOverflowException
【发布时间】: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;
}

【问题讨论】:

    标签: apache tomcat8


    【解决方案1】:

    查看max_packet_size 属性。 AJP 中的默认值为 8192

    此属性设置最大 AJP 数据包大小(以字节为单位)。您可以设置的最大值为 65536。如果从默认值更改它,则还必须更改 Tomcat 端 AJP 连接器的 packetSize 属性!属性 packetSize 在 Tomcat 6.0.2 及更高版本中可用。 以上设置需要在tomcat-connector和tomcat本身中进行(必须在Tomcat的conf/server.xml文件的AJP元素中进行相应的设置)。

    更多详情请见here

    【讨论】:

      【解决方案2】:

      它需要 Apache 配置中的 ProxyIOBufferSize 和 AJP 连接上的 tomcat 配置中的 packetSize。 apache config 编号必须小于或等于 tomcat packetSize。最安全的是让他们平等。

      它们都设置为 64 kb,即允许最大 65,536。

      【讨论】:

        【解决方案3】:

        在我的情况下,错误是这样的

        AH00548: NameVirtualHost has no effect and will be removed in the next release /home/jadmin_q/apache2/conf/extra/httpd-vhosts.conf:1
        

        如前所述,我打开了文件 httpd-vhosts.conf 和第 1 行并注释了 NameVirtualHost 行,下次错误没有出现

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-05-11
          • 2017-01-24
          • 2015-01-27
          • 2018-07-24
          • 1970-01-01
          • 1970-01-01
          • 2016-05-18
          相关资源
          最近更新 更多