Detect and use new API calls to get the server version/banner when available.

This commit is contained in:
brectanus 2007-09-11 18:01:28 +00:00
parent 8549546b5e
commit 1e603d8a3e
3 changed files with 20 additions and 2 deletions

View File

@ -1,6 +1,8 @@
?? ??? 2007 - 2.5.0-trunk
-------------------------
* Used new API calls to get the server version/banner when available.
* Allow mod_rpaf and mod_extract_forwarded2 to work before ModSecurity.
* Quiet some compiler warnings.

View File

@ -13,6 +13,8 @@
#include "http_core.h"
#include "http_request.h"
#include "httpd.h"
#include "ap_release.h"
#include <apr_general.h>
#include <apr_optional.h>
@ -30,6 +32,19 @@ APR_DECLARE_OPTIONAL_FN(void, modsec_register_variable,
unsigned int is_cacheable, unsigned int availability));
#endif
/* ap_get_server_version() is gone in 2.3.0.
* It was replaced by two calls in 2.2.4 and higher:
* ap_get_server_banner()
* ap_get_server_description()
*/
#if (AP_SERVER_MAJORVERSION_NUMBER > 2) \
|| ((AP_SERVER_MAJORVERSION_NUMBER == 2)&& (AP_SERVER_MINORVERSION_NUMBER > 2)) \
|| ((AP_SERVER_MAJORVERSION_NUMBER == 2) && (AP_SERVER_MINORVERSION_NUMBER == 2) && (AP_SERVER_PATCHLEVEL_NUMBER >= 4))
#define apache_get_server_version() ap_get_server_banner()
#else
#define apache_get_server_version() ap_get_server_version()
#endif
/* Configuration functions. */

View File

@ -379,7 +379,8 @@ static apr_status_t change_server_signature(server_rec *s) {
if (new_server_signature == NULL) return 0;
server_version = (char *)ap_get_server_version();
server_version = (char *)apache_get_server_version();
if (server_version == NULL) {
ap_log_error(APLOG_MARK, APLOG_ERR | APLOG_NOERRNO, 0, s,
"SecServerSignature: Apache returned null as signature.");
@ -442,7 +443,7 @@ static int hook_post_config(apr_pool_t *mp, apr_pool_t *mp_log, apr_pool_t *mp_t
}
/* Store the original server signature */
real_server_signature = apr_pstrdup(mp, ap_get_server_version());
real_server_signature = apr_pstrdup(mp, apache_get_server_version());
/* Make some space in the server signature for later */
if (new_server_signature != NULL) {