From: Jim Jagielski Date: Sat, 1 Sep 2007 12:09:28 +0000 (+0000) Subject: * ssl/ssl_engine_io.c: Fix SSL Protocol hexdumps for EBCDIC systems X-Git-Tag: 2.2.6~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d8fe98a29ed35e7da54e3b569edfe03820bdac64;p=thirdparty%2Fapache%2Fhttpd.git * ssl/ssl_engine_io.c: Fix SSL Protocol hexdumps for EBCDIC systems A conversion is required for mod_ssl to display the SSL protocol correctly on EBCDIC machines. Backport of rev. 349906 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@571776 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index 64e7307de4d..6610c783e0f 100644 --- a/STATUS +++ b/STATUS @@ -79,15 +79,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * ssl/ssl_engine_io.c: Fix SSL Protocol hexdumps for EBCDIC systems - A conversion is required for mod_ssl to display the SSL protocol correctly - on EBCDIC machines. Backport of rev. 349906 - Trunk version of patch: - http://svn.apache.org/viewvc?view=rev&revision=349906 from 2005-11-30 - 2.2.x version of patch: - http://people.apache.org/~martin/ssl_engine_io.c.349906.patch - +1: martin, rpluem, jim - * mod_proxy_http: Don't wait for response body in a HEAD request PR 41644 http://svn.apache.org/viewvc?view=rev&revision=571002 diff --git a/modules/ssl/ssl_engine_io.c b/modules/ssl/ssl_engine_io.c index fc191d3307d..f3917ea10b5 100644 --- a/modules/ssl/ssl_engine_io.c +++ b/modules/ssl/ssl_engine_io.c @@ -1722,6 +1722,16 @@ static void ssl_io_data_dump(server_rec *srvr, ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, srvr, "+-------------------------------------------------------------------------+"); for(i = 0 ; i< rows; i++) { +#if APR_CHARSET_EBCDIC + char ebcdic_text[DUMP_WIDTH]; + /* Determine how many bytes we are going to process in this row. */ + j = DUMP_WIDTH; + if ((i * DUMP_WIDTH + j) > len) + j = len % DUMP_WIDTH; + if (j == 0) j = DUMP_WIDTH; + memcpy(ebcdic_text, (char *)(s) + i * DUMP_WIDTH, j); + ap_xlate_proto_from_ascii(ebcdic_text, j); +#endif apr_snprintf(tmp, sizeof(tmp), "| %04x: ", i * DUMP_WIDTH); apr_cpystrn(buf, tmp, sizeof(buf)); for (j = 0; j < DUMP_WIDTH; j++) { @@ -1739,7 +1749,11 @@ static void ssl_io_data_dump(server_rec *srvr, apr_cpystrn(buf+strlen(buf), " ", sizeof(buf)-strlen(buf)); else { ch = ((unsigned char)*((char *)(s) + i * DUMP_WIDTH + j)) & 0xff; +#if APR_CHARSET_EBCDIC + apr_snprintf(tmp, sizeof(tmp), "%c", ((ch >= 0x20 /*' '*/) && (ch <= 0x7e /*'~'*/)) ? ebcdic_text[j] : '.'); +#else apr_snprintf(tmp, sizeof(tmp), "%c", ((ch >= ' ') && (ch <= '~')) ? ch : '.'); +#endif apr_cpystrn(buf+strlen(buf), tmp, sizeof(buf)-strlen(buf)); } }