dgaudet 98/07/07 10:04:20
Modified: src/support suexec.c Log: How can suexec have too few arguments? Apache invokes it. If that error ever occurs then it's a bug in Apache, and we can put debugging code in then. I can't see how Apache would ever make this mistake by inspecting the code in util_script.c. Is there a PR or something that reported this as a bug?? Reverting to 1.39. Revision Changes Path 1.42 +5 -39 apache-1.3/src/support/suexec.c Index: suexec.c =================================================================== RCS file: /export/home/cvs/apache-1.3/src/support/suexec.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- suexec.c 1998/07/01 10:34:20 1.41 +++ suexec.c 1998/07/07 17:04:19 1.42 @@ -72,7 +72,6 @@ */ #include "conf.h" -#include "ap.h" #include <sys/param.h> #include <sys/stat.h> #include <sys/types.h> @@ -206,7 +205,7 @@ if ((cleanenv = (char **) calloc(AP_ENVBUF, sizeof(char *))) == NULL) { - log_err("failed to malloc memory for environment\n"); + log_err("failed to malloc env mem\n"); exit(120); } @@ -259,40 +258,7 @@ */ prog = argv[0]; if (argc < 4) { - char msgbuf[2048]; - int i; - int clen; - static char *omsg = " {buffer overflow}"; - int olen = strlen(omsg); - - ap_snprintf(msgbuf, sizeof(msgbuf), "too few (%d) arguments:", argc); - clen = strlen(msgbuf); - for (i = 0; i < argc; i++) { - int alen = strlen(argv[i]) + 4; - int rlen = sizeof(msgbuf) - clen - 1; - int oflow = (alen > rlen); - - alen = oflow ? rlen : alen; - if (rlen > 1) { - msgbuf[clen++] = ' '; - alen--; - } - if (rlen > 2) { - msgbuf[clen++] = '['; - alen--; - } - ap_cpystrn(&msgbuf[clen], argv[i], alen); - if (oflow) { - ap_cpystrn(&msgbuf[sizeof(msgbuf) - olen - 1], omsg, olen + 1); - break; - } - else { - clen += alen - 2; - msgbuf[clen++] = ']'; - msgbuf[clen] = '\0'; - } - } - log_err("%s\n", msgbuf); + log_err("too few arguments\n"); exit(101); } target_uname = argv[1]; @@ -317,12 +283,12 @@ #ifdef _OSD_POSIX /* User name comparisons are case insensitive on BS2000/OSD */ if (strcasecmp(HTTPD_USER, pw->pw_name)) { - log_err("user mismatch (%s instead of %s)\n", pw->pw_name, HTTPD_USER); + log_err("user mismatch (%s)\n", pw->pw_name); exit(103); } #else /*_OSD_POSIX*/ if (strcmp(HTTPD_USER, pw->pw_name)) { - log_err("user mismatch (%s instead of %s)\n", pw->pw_name, HTTPD_USER); + log_err("user mismatch (%s)\n", pw->pw_name); exit(103); } #endif /*_OSD_POSIX*/ @@ -384,7 +350,7 @@ * Log the transaction here to be sure we have an open log * before we setuid(). */ - log_err("uid: (%s/%s) gid: (%s/%s) cmd: %s\n", + log_err("uid: (%s/%s) gid: (%s/%s) %s\n", target_uname, actual_uname, target_gname, actual_gname, cmd);