]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Backport trunk revs 826506, 826520, 826528, 987498
authorJeff Trawick <trawick@apache.org>
Wed, 22 Sep 2010 01:35:42 +0000 (01:35 +0000)
committerJeff Trawick <trawick@apache.org>
Wed, 22 Sep 2010 01:35:42 +0000 (01:35 +0000)
sync htdigest with trunk to fix overflows and pick up other minor tweaks

Reviewed by: poirier, rpluem

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@999717 13f79535-47bb-0310-9956-ffa450edef68

STATUS
support/htdigest.c

diff --git a/STATUS b/STATUS
index 8a2261167ecc3edc04f3766d414ab45469110aa2..510db8835faacbc993739e0d00244dc7368f849f 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -87,13 +87,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-  * sync htdigest with trunk to fix overflows and pick up other minor tweaks
-    Trunk patches: http://svn.apache.org/viewvc?view=revision&revision=826506
-                   http://svn.apache.org/viewvc?view=revision&revision=826520
-                   http://svn.apache.org/viewvc?view=revision&revision=826528
-                   http://svn.apache.org/viewvc?view=revision&revision=987498
-   2.2.x patch: http://people.apache.org/~trawick/htdigest-sync.txt
-   +1: trawick, poirier, rpluem
 
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
   [ New proposals should be added at the end of the list ]
index 4f99d3eb71ebd88ea9d7627d011c83e66f8c2a9d..6a0e26f123f95feb5edc7addb41999e1ec69b494 100644 (file)
@@ -124,7 +124,7 @@ static void add_password(const char *user, const char *realm, apr_file_t *f)
     char *pw;
     apr_md5_ctx_t context;
     unsigned char digest[16];
-    char string[MAX_STRING_LEN];
+    char string[3 * MAX_STRING_LEN]; /* this includes room for 2 * ':' + '\0' */
     char pwin[MAX_STRING_LEN];
     char pwv[MAX_STRING_LEN];
     unsigned int i;
@@ -144,7 +144,7 @@ static void add_password(const char *user, const char *realm, apr_file_t *f)
     apr_file_printf(f, "%s:%s:", user, realm);
 
     /* Do MD5 stuff */
-    sprintf(string, "%s:%s:%s", user, realm, pw);
+    apr_snprintf(string, sizeof(string), "%s:%s:%s", user, realm, pw);
 
     apr_md5_init(&context);
 #if APR_CHARSET_EBCDIC
@@ -188,8 +188,8 @@ int main(int argc, const char * const argv[])
     char *dirname;
     char user[MAX_STRING_LEN];
     char realm[MAX_STRING_LEN];
-    char line[MAX_STRING_LEN];
-    char l[MAX_STRING_LEN];
+    char line[3 * MAX_STRING_LEN];
+    char l[3 * MAX_STRING_LEN];
     char w[MAX_STRING_LEN];
     char x[MAX_STRING_LEN];
     int found;
@@ -222,9 +222,11 @@ int main(int argc, const char * const argv[])
                     apr_strerror(rv, errmsg, sizeof errmsg));
             exit(1);
         }
+        apr_cpystrn(user, argv[4], sizeof(user));
+        apr_cpystrn(realm, argv[3], sizeof(realm));
         apr_file_printf(errfile, "Adding password for %s in realm %s.\n",
-                    argv[4], argv[3]);
-        add_password(argv[4], argv[3], f);
+                    user, realm);
+        add_password(user, realm, f);
         apr_file_close(f);
         exit(0);
     }
@@ -253,7 +255,7 @@ int main(int argc, const char * const argv[])
     apr_cpystrn(realm, argv[2], sizeof(realm));
 
     found = 0;
-    while (!(get_line(line, MAX_STRING_LEN, f))) {
+    while (!(get_line(line, sizeof(line), f))) {
         if (found || (line[0] == '#') || (!line[0])) {
             putline(tfp, line);
             continue;