htpasswd/htdbm: fix hash generation bug (#956344)
- do not dump vhosts twice in httpd -S output (#928761) - mod_cache: fix potential crash caused by uninitialized variable (#954109)
This commit is contained in:
parent
e3774a7565
commit
46396bf734
45
httpd-2.4.4-dump-vhost-twice.patch
Normal file
45
httpd-2.4.4-dump-vhost-twice.patch
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
--- trunk/server/vhost.c 2013/05/11 11:51:28 1481305
|
||||||
|
+++ trunk/server/vhost.c 2013/05/11 12:05:24 1481306
|
||||||
|
@@ -577,14 +577,21 @@
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (s = main_s->next; s; s = s->next) {
|
||||||
|
+ server_addr_rec *sar_prev = NULL;
|
||||||
|
has_default_vhost_addr = 0;
|
||||||
|
for (sar = s->addrs; sar; sar = sar->next) {
|
||||||
|
ipaddr_chain *ic;
|
||||||
|
char inaddr_any[16] = {0}; /* big enough to handle IPv4 or IPv6 */
|
||||||
|
-
|
||||||
|
+ /* XXX: this treats 0.0.0.0 as a "default" server which matches no-exact-match for IPv6 */
|
||||||
|
if (!memcmp(sar->host_addr->ipaddr_ptr, inaddr_any, sar->host_addr->ipaddr_len)) {
|
||||||
|
ic = find_default_server(sar->host_port);
|
||||||
|
- if (!ic || sar->host_port != ic->sar->host_port) {
|
||||||
|
+
|
||||||
|
+ if (ic && sar->host_port == ic->sar->host_port) { /* we're a match for an existing "default server" */
|
||||||
|
+ if (!sar_prev || memcmp(sar_prev->host_addr->ipaddr_ptr, inaddr_any, sar_prev->host_addr->ipaddr_len)) {
|
||||||
|
+ add_name_vhost_config(p, main_s, s, sar, ic);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
/* No default server, or we found a default server but
|
||||||
|
** exactly one of us is a wildcard port, which means we want
|
||||||
|
** two ip-based vhosts not an NVH with two names
|
||||||
|
@@ -592,6 +599,7 @@
|
||||||
|
ic = new_ipaddr_chain(p, s, sar);
|
||||||
|
ic->next = default_list;
|
||||||
|
default_list = ic;
|
||||||
|
+ add_name_vhost_config(p, main_s, s, sar, ic);
|
||||||
|
}
|
||||||
|
has_default_vhost_addr = 1;
|
||||||
|
}
|
||||||
|
@@ -609,8 +617,9 @@
|
||||||
|
ic->next = *iphash_table_tail[bucket];
|
||||||
|
*iphash_table_tail[bucket] = ic;
|
||||||
|
}
|
||||||
|
+ add_name_vhost_config(p, main_s, s, sar, ic);
|
||||||
|
}
|
||||||
|
- add_name_vhost_config(p, main_s, s, sar, ic);
|
||||||
|
+ sar_prev = sar;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ok now we want to set up a server_hostname if the user was
|
11
httpd-2.4.4-mod_cache-tmppath.patch
Normal file
11
httpd-2.4.4-mod_cache-tmppath.patch
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
--- a/modules/cache/mod_cache.c
|
||||||
|
+++ a/modules/cache/mod_cache.c
|
||||||
|
@@ -1773,7 +1773,7 @@ static void *merge_dir_config(apr_pool_t *p, void *basev, void *addv) {
|
||||||
|
|
||||||
|
static void * create_cache_config(apr_pool_t *p, server_rec *s)
|
||||||
|
{
|
||||||
|
- const char *tmppath;
|
||||||
|
+ const char *tmppath = NULL;
|
||||||
|
cache_server_conf *ps = apr_pcalloc(p, sizeof(cache_server_conf));
|
||||||
|
|
||||||
|
/* array of URL prefixes for which caching is enabled */
|
110
httpd-2.4.4-r1476674.patch
Normal file
110
httpd-2.4.4-r1476674.patch
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
Index: support/passwd_common.c
|
||||||
|
===================================================================
|
||||||
|
--- a/support/passwd_common.c (revision 1476673)
|
||||||
|
+++ b/support/passwd_common.c (working copy)
|
||||||
|
@@ -113,17 +113,17 @@
|
||||||
|
|
||||||
|
int get_password(struct passwd_ctx *ctx)
|
||||||
|
{
|
||||||
|
+ char buf[MAX_STRING_LEN + 1];
|
||||||
|
if (ctx->passwd_src == PW_STDIN) {
|
||||||
|
- char *buf = ctx->out;
|
||||||
|
apr_file_t *file_stdin;
|
||||||
|
apr_size_t nread;
|
||||||
|
if (apr_file_open_stdin(&file_stdin, ctx->pool) != APR_SUCCESS) {
|
||||||
|
ctx->errstr = "Unable to read from stdin.";
|
||||||
|
return ERR_GENERAL;
|
||||||
|
}
|
||||||
|
- if (apr_file_read_full(file_stdin, buf, ctx->out_len - 1,
|
||||||
|
+ if (apr_file_read_full(file_stdin, buf, sizeof(buf) - 1,
|
||||||
|
&nread) != APR_EOF
|
||||||
|
- || nread == ctx->out_len - 1) {
|
||||||
|
+ || nread == sizeof(buf) - 1) {
|
||||||
|
goto err_too_long;
|
||||||
|
}
|
||||||
|
buf[nread] = '\0';
|
||||||
|
@@ -133,21 +133,24 @@
|
||||||
|
buf[nread-2] = '\0';
|
||||||
|
}
|
||||||
|
apr_file_close(file_stdin);
|
||||||
|
+ ctx->passwd = apr_pstrdup(ctx->pool, buf);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
- char buf[MAX_STRING_LEN + 1];
|
||||||
|
apr_size_t bufsize = sizeof(buf);
|
||||||
|
- if (apr_password_get("New password: ", ctx->out, &ctx->out_len) != 0)
|
||||||
|
+ if (apr_password_get("New password: ", buf, &bufsize) != 0)
|
||||||
|
goto err_too_long;
|
||||||
|
+ ctx->passwd = apr_pstrdup(ctx->pool, buf);
|
||||||
|
+ bufsize = sizeof(buf);
|
||||||
|
+ buf[0] = '\0';
|
||||||
|
apr_password_get("Re-type new password: ", buf, &bufsize);
|
||||||
|
- if (strcmp(ctx->out, buf) != 0) {
|
||||||
|
+ if (strcmp(ctx->passwd, buf) != 0) {
|
||||||
|
ctx->errstr = "password verification error";
|
||||||
|
- memset(ctx->out, '\0', ctx->out_len);
|
||||||
|
+ memset(ctx->passwd, '\0', strlen(ctx->passwd));
|
||||||
|
memset(buf, '\0', sizeof(buf));
|
||||||
|
return ERR_PWMISMATCH;
|
||||||
|
}
|
||||||
|
- memset(buf, '\0', sizeof(buf));
|
||||||
|
}
|
||||||
|
+ memset(buf, '\0', sizeof(buf));
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err_too_long:
|
||||||
|
@@ -164,7 +167,6 @@
|
||||||
|
int mkhash(struct passwd_ctx *ctx)
|
||||||
|
{
|
||||||
|
char *pw;
|
||||||
|
- char pwin[MAX_STRING_LEN];
|
||||||
|
char salt[16];
|
||||||
|
apr_status_t rv;
|
||||||
|
int ret = 0;
|
||||||
|
@@ -177,14 +179,11 @@
|
||||||
|
"Warning: Ignoring -C argument for this algorithm." NL);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (ctx->passwd != NULL) {
|
||||||
|
- pw = ctx->passwd;
|
||||||
|
- }
|
||||||
|
- else {
|
||||||
|
+ if (ctx->passwd == NULL) {
|
||||||
|
if ((ret = get_password(ctx)) != 0)
|
||||||
|
return ret;
|
||||||
|
- pw = pwin;
|
||||||
|
}
|
||||||
|
+ pw = ctx->passwd;
|
||||||
|
|
||||||
|
switch (ctx->alg) {
|
||||||
|
case ALG_APSHA:
|
||||||
|
@@ -224,7 +223,7 @@
|
||||||
|
|
||||||
|
apr_cpystrn(ctx->out, cbuf, ctx->out_len - 1);
|
||||||
|
if (strlen(pw) > 8) {
|
||||||
|
- char *truncpw = strdup(pw);
|
||||||
|
+ char *truncpw = apr_pstrdup(ctx->pool, pw);
|
||||||
|
truncpw[8] = '\0';
|
||||||
|
if (!strcmp(ctx->out, crypt(truncpw, salt))) {
|
||||||
|
apr_file_printf(errfile, "Warning: Password truncated to 8 "
|
||||||
|
Index: support/htpasswd.c
|
||||||
|
===================================================================
|
||||||
|
--- a/support/htpasswd.c (revision 1476673)
|
||||||
|
+++ b/support/htpasswd.c (working copy)
|
||||||
|
@@ -253,7 +253,6 @@
|
||||||
|
int main(int argc, const char * const argv[])
|
||||||
|
{
|
||||||
|
apr_file_t *fpw = NULL;
|
||||||
|
- const char *errstr = NULL;
|
||||||
|
char line[MAX_STRING_LEN];
|
||||||
|
char *pwfilename = NULL;
|
||||||
|
char *user = NULL;
|
||||||
|
@@ -345,7 +344,7 @@
|
||||||
|
if (!(mask & APHTP_DELUSER)) {
|
||||||
|
i = mkrecord(&ctx, user);
|
||||||
|
if (i != 0) {
|
||||||
|
- apr_file_printf(errfile, "%s: %s" NL, argv[0], errstr);
|
||||||
|
+ apr_file_printf(errfile, "%s: %s" NL, argv[0], ctx.errstr);
|
||||||
|
exit(i);
|
||||||
|
}
|
||||||
|
if (mask & APHTP_NOFILE) {
|
13
httpd.spec
13
httpd.spec
@ -14,7 +14,7 @@
|
|||||||
Summary: Apache HTTP Server
|
Summary: Apache HTTP Server
|
||||||
Name: httpd
|
Name: httpd
|
||||||
Version: 2.4.4
|
Version: 2.4.4
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
URL: http://httpd.apache.org/
|
URL: http://httpd.apache.org/
|
||||||
Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2
|
Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.bz2
|
||||||
Source1: index.html
|
Source1: index.html
|
||||||
@ -64,6 +64,9 @@ Patch31: httpd-2.4.4-sslmultiproxy.patch
|
|||||||
# Bug fixes
|
# Bug fixes
|
||||||
Patch50: httpd-2.4.2-r1374214+.patch
|
Patch50: httpd-2.4.2-r1374214+.patch
|
||||||
Patch51: httpd-2.4.3-sslsninotreq.patch
|
Patch51: httpd-2.4.3-sslsninotreq.patch
|
||||||
|
Patch52: httpd-2.4.4-r1476674.patch
|
||||||
|
Patch53: httpd-2.4.4-mod_cache-tmppath.patch
|
||||||
|
Patch54: httpd-2.4.4-dump-vhost-twice.patch
|
||||||
License: ASL 2.0
|
License: ASL 2.0
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
@ -188,6 +191,9 @@ interface for storing and accessing per-user session data.
|
|||||||
|
|
||||||
%patch50 -p1 -b .r1374214+
|
%patch50 -p1 -b .r1374214+
|
||||||
%patch51 -p1 -b .sninotreq
|
%patch51 -p1 -b .sninotreq
|
||||||
|
%patch52 -p1 -b .r1476674
|
||||||
|
%patch53 -p1 -b .tmppath
|
||||||
|
%patch54 -p1 -b .vhosttwice
|
||||||
|
|
||||||
# Patch in the vendor string
|
# Patch in the vendor string
|
||||||
sed -i '/^#define PLATFORM/s/Unix/%{vstring}/' os/unix/os.h
|
sed -i '/^#define PLATFORM/s/Unix/%{vstring}/' os/unix/os.h
|
||||||
@ -610,6 +616,11 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_sysconfdir}/rpm/macros.httpd
|
%{_sysconfdir}/rpm/macros.httpd
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon May 20 2013 Jan Kaluza <jkaluza@redhat.com> - 2.4.4-6
|
||||||
|
- htpasswd/htdbm: fix hash generation bug (#956344)
|
||||||
|
- do not dump vhosts twice in httpd -S output (#928761)
|
||||||
|
- mod_cache: fix potential crash caused by uninitialized variable (#954109)
|
||||||
|
|
||||||
* Thu Apr 18 2013 Jan Kaluza <jkaluza@redhat.com> - 2.4.4-5
|
* Thu Apr 18 2013 Jan Kaluza <jkaluza@redhat.com> - 2.4.4-5
|
||||||
- execute systemctl reload as result of apachectl graceful
|
- execute systemctl reload as result of apachectl graceful
|
||||||
- mod_ssl: ignore SNI hints unless required by config
|
- mod_ssl: ignore SNI hints unless required by config
|
||||||
|
Loading…
Reference in New Issue
Block a user