summaryrefslogtreecommitdiffstats
path: root/httpd-2.4.2-r1346905.patch
diff options
context:
space:
mode:
Diffstat (limited to 'httpd-2.4.2-r1346905.patch')
-rw-r--r--httpd-2.4.2-r1346905.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/httpd-2.4.2-r1346905.patch b/httpd-2.4.2-r1346905.patch
new file mode 100644
index 0000000..e94558e
--- /dev/null
+++ b/httpd-2.4.2-r1346905.patch
@@ -0,0 +1,65 @@
+# ./pullrev.sh 1346905
+
+https://bugzilla.redhat.com/show_bug.cgi?id=818684
+
+http://svn.apache.org/viewvc?view=revision&revision=1346905
+
+--- httpd-2.4.2/support/htdbm.c
++++ httpd-2.4.2/support/htdbm.c
+@@ -288,6 +288,9 @@
+ {
+ char cpw[MAX_STRING_LEN];
+ char salt[9];
++#if (!(defined(WIN32) || defined(NETWARE)))
++ char *cbuf;
++#endif
+
+ switch (htdbm->alg) {
+ case ALG_APSHA:
+@@ -315,7 +318,15 @@
+ (void) srand((int) time((time_t *) NULL));
+ to64(&salt[0], rand(), 8);
+ salt[8] = '\0';
+- apr_cpystrn(cpw, crypt(htdbm->userpass, salt), sizeof(cpw) - 1);
++ cbuf = crypt(htdbm->userpass, salt);
++ if (cbuf == NULL) {
++ char errbuf[128];
++
++ fprintf(stderr, "crypt() failed: %s\n",
++ apr_strerror(errno, errbuf, sizeof errbuf));
++ exit(ERR_PWMISMATCH);
++ }
++ apr_cpystrn(cpw, cbuf, sizeof(cpw) - 1);
+ fprintf(stderr, "CRYPT is now deprecated, use MD5 instead!\n");
+ #endif
+ default:
+--- httpd-2.4.2/support/htpasswd.c
++++ httpd-2.4.2/support/htpasswd.c
+@@ -174,6 +174,9 @@
+ char pwv[MAX_STRING_LEN];
+ char salt[9];
+ apr_size_t bufsize;
++#if CRYPT_ALGO_SUPPORTED
++ char *cbuf;
++#endif
+
+ if (passwd != NULL) {
+ pw = passwd;
+@@ -226,7 +229,16 @@
+ to64(&salt[0], rand(), 8);
+ salt[8] = '\0';
+
+- apr_cpystrn(cpw, crypt(pw, salt), sizeof(cpw) - 1);
++ cbuf = crypt(pw, salt);
++ if (cbuf == NULL) {
++ char errbuf[128];
++
++ apr_snprintf(record, rlen-1, "crypt() failed: %s",
++ apr_strerror(errno, errbuf, sizeof errbuf));
++ return ERR_PWMISMATCH;
++ }
++
++ apr_cpystrn(cpw, cbuf, sizeof(cpw) - 1);
+ if (strlen(pw) > 8) {
+ char *truncpw = strdup(pw);
+ truncpw[8] = '\0';