httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From c...@hyperreal.org
Subject cvs commit: apache-1.3/src/main util_script.c
Date Mon, 15 Jun 1998 16:27:56 GMT
coar        98/06/15 09:27:56

  Modified:    src/main util_script.c
  Log:
  	More style-guide cleanups.
  
  Revision  Changes    Path
  1.118     +208 -122  apache-1.3/src/main/util_script.c
  
  Index: util_script.c
  ===================================================================
  RCS file: /export/home/cvs/apache-1.3/src/main/util_script.c,v
  retrieving revision 1.117
  retrieving revision 1.118
  diff -u -r1.117 -r1.118
  --- util_script.c	1998/06/13 15:22:54	1.117
  +++ util_script.c	1998/06/15 16:27:55	1.118
  @@ -100,21 +100,26 @@
   
       /* count the number of keywords */
   
  -    for (x = 0, numwords = 1; args[x]; x++)
  -	if (args[x] == '+')
  +    for (x = 0, numwords = 1; args[x]; x++) {
  +        if (args[x] == '+') {
   	    ++numwords;
  +	}
  +    }
   
       if (numwords > APACHE_ARG_MAX - 5) {
   	numwords = APACHE_ARG_MAX - 5;	/* Truncate args to prevent overrun */
       }
       av = (char **) ap_palloc(p, (numwords + 5) * sizeof(char *));
   
  -    if (path)
  +    if (path) {
   	av[idx++] = path;
  -    if (user)
  +    }
  +    if (user) {
   	av[idx++] = user;
  -    if (group)
  +    }
  +    if (group) {
   	av[idx++] = group;
  +    }
   
       av[idx++] = av0;
   
  @@ -157,12 +162,14 @@
       j = 0;
       if (!ap_table_get(t, "TZ")) {
   	tz = getenv("TZ");
  -	if (tz != NULL)
  +	if (tz != NULL) {
   	    env[j++] = ap_pstrcat(p, "TZ=", tz, NULL);
  +	}
       }
       for (i = 0; i < env_arr->nelts; ++i) {
  -	if (!elts[i].key)
  +        if (!elts[i].key) {
   	    continue;
  +	}
   	env[j] = ap_pstrcat(p, elts[i].key, "=", elts[i].val, NULL);
   	whack = env[j];
   	if (isdigit(*whack)) {
  @@ -203,48 +210,58 @@
        */
   
       for (i = 0; i < hdrs_arr->nelts; ++i) {
  -	if (!hdrs[i].key)
  +        if (!hdrs[i].key) {
   	    continue;
  +	}
   
   	/* A few headers are special cased --- Authorization to prevent
   	 * rogue scripts from capturing passwords; content-type and -length
   	 * for no particular reason.
   	 */
   
  -	if (!strcasecmp(hdrs[i].key, "Content-type"))
  +	if (!strcasecmp(hdrs[i].key, "Content-type")) {
   	    ap_table_setn(e, "CONTENT_TYPE", hdrs[i].val);
  -	else if (!strcasecmp(hdrs[i].key, "Content-length"))
  +	}
  +	else if (!strcasecmp(hdrs[i].key, "Content-length")) {
   	    ap_table_setn(e, "CONTENT_LENGTH", hdrs[i].val);
  +	}
   	/*
   	 * You really don't want to disable this check, since it leaves you
   	 * wide open to CGIs stealing passwords and people viewing them
   	 * in the environment with "ps -e".  But, if you must...
   	 */
   #ifndef SECURITY_HOLE_PASS_AUTHORIZATION
  -	else if (!strcasecmp(hdrs[i].key, "Authorization") ||
  -                 !strcasecmp(hdrs[i].key, "Proxy-Authorization"))
  +	else if (!strcasecmp(hdrs[i].key, "Authorization") 
  +		 || !strcasecmp(hdrs[i].key, "Proxy-Authorization")) {
   	    continue;
  +	}
   #endif
  -	else
  +	else {
   	    ap_table_setn(e, http2env(r->pool, hdrs[i].key), hdrs[i].val);
  +	}
       }
   
  -    if (!(env_path = getenv("PATH")))
  +    if (!(env_path = getenv("PATH"))) {
   	env_path = DEFAULT_PATH;
  +    }
   
   #ifdef WIN32
  -    if (env_temp = getenv("SystemRoot"))
  +    if (env_temp = getenv("SystemRoot")) {
           ap_table_setn(e, "SystemRoot", env_temp);         
  -    if (env_temp = getenv("COMSPEC"))
  +    }
  +    if (env_temp = getenv("COMSPEC")) {
           ap_table_setn(e, "COMSPEC", env_temp);            
  -    if (env_temp = getenv("WINDIR"))
  -        ap_table_setn(e, "WINDIR", env_temp);             
  +    }
  +    if (env_temp = getenv("WINDIR")) {
  +        ap_table_setn(e, "WINDIR", env_temp);
  +    }
   #endif
   
       ap_table_setn(e, "PATH", env_path);
       ap_table_setn(e, "SERVER_SOFTWARE", ap_get_server_version());
       ap_table_setn(e, "SERVER_NAME", ap_get_server_name(r));
  -    ap_table_setn(e, "SERVER_PORT", ap_psprintf(r->pool, "%u", ap_get_server_port(r)));
  +    ap_table_setn(e, "SERVER_PORT",
  +		  ap_psprintf(r->pool, "%u", ap_get_server_port(r)));
       host = ap_get_remote_host(c, r->per_dir_config, REMOTE_HOST);
       if (host) {
   	ap_table_setn(e, "REMOTE_HOST", host);
  @@ -254,23 +271,29 @@
       ap_table_setn(e, "SERVER_ADMIN", s->server_admin);	/* Apache */
       ap_table_setn(e, "SCRIPT_FILENAME", r->filename);	/* Apache */
   
  -    ap_table_setn(e, "REMOTE_PORT", ap_psprintf(r->pool, "%d", ntohs(c->remote_addr.sin_port)));
  +    ap_table_setn(e, "REMOTE_PORT",
  +		  ap_psprintf(r->pool, "%d", ntohs(c->remote_addr.sin_port)));
   
  -    if (c->user)
  +    if (c->user) {
   	ap_table_setn(e, "REMOTE_USER", c->user);
  -    if (c->ap_auth_type)
  +    }
  +    if (c->ap_auth_type) {
   	ap_table_setn(e, "AUTH_TYPE", c->ap_auth_type);
  +    }
       rem_logname = ap_get_remote_logname(r);
  -    if (rem_logname)
  +    if (rem_logname) {
   	ap_table_setn(e, "REMOTE_IDENT", ap_pstrdup(r->pool, rem_logname));
  +    }
   
       /* Apache custom error responses. If we have redirected set two new vars */
   
       if (r->prev) {
  -	if (r->prev->args)
  +        if (r->prev->args) {
   	    ap_table_setn(e, "REDIRECT_QUERY_STRING", r->prev->args);
  -	if (r->prev->uri)
  +	}
  +	if (r->prev->uri) {
   	    ap_table_setn(e, "REDIRECT_URL", r->prev->uri);
  +	}
       }
   }
   
  @@ -286,12 +309,13 @@
   
       while (lu-- && lp-- && uri[lu] == path_info[lp]);
   
  -    if (lu == -1)
  +    if (lu == -1) {
   	lu = 0;
  -
  -    while (uri[lu] != '\0' && uri[lu] != '/')
  -	lu++;
  +    }
   
  +    while (uri[lu] != '\0' && uri[lu] != '/') {
  +        lu++;
  +    }
       return lu;
   }
   
  @@ -302,19 +326,23 @@
   {
       char *first, *last;
   
  -    if (r->the_request == NULL)
  +    if (r->the_request == NULL) {
   	return (char *) ap_pcalloc(r->pool, 1);
  +    }
   
       first = r->the_request;	/* use the request-line */
   
  -    while (*first && !isspace(*first))
  +    while (*first && !isspace(*first)) {
   	++first;		/* skip over the method */
  -    while (isspace(*first))
  +    }
  +    while (isspace(*first)) {
   	++first;		/*   and the space(s)   */
  +    }
   
       last = first;
  -    while (*last && !isspace(*last))
  +    while (*last && !isspace(*last)) {
   	++last;			/* end at next whitespace */
  +    }
   
       return ap_pstrndup(r->pool, first, last - first);
   }
  @@ -337,8 +365,9 @@
   
       if (!strcmp(r->protocol, "INCLUDED")) {
   	ap_table_setn(e, "SCRIPT_NAME", r->uri);
  -	if (r->path_info && *r->path_info)
  +	if (r->path_info && *r->path_info) {
   	    ap_table_setn(e, "PATH_INFO", r->path_info);
  +	}
       }
       else if (!r->path_info || !*r->path_info) {
   	ap_table_setn(e, "SCRIPT_NAME", r->uri);
  @@ -346,8 +375,8 @@
       else {
   	int path_info_start = ap_find_path_info(r->uri, r->path_info);
   
  -	ap_table_setn(e, "SCRIPT_NAME", ap_pstrndup(r->pool, r->uri,
  -					     path_info_start));
  +	ap_table_setn(e, "SCRIPT_NAME",
  +		      ap_pstrndup(r->pool, r->uri, path_info_start));
   
   	ap_table_setn(e, "PATH_INFO", r->path_info);
       }
  @@ -358,15 +387,16 @@
   	 * Need to re-escape it for this, since the entire URI was
   	 * un-escaped before we determined where the PATH_INFO began.
   	 */
  -	request_rec *pa_req = ap_sub_req_lookup_uri(escape_uri(r->pool, r->path_info),
  -						 r);
  +	request_rec *pa_req;
  +
  +	pa_req = ap_sub_req_lookup_uri(escape_uri(r->pool, r->path_info), r);
   
   	if (pa_req->filename) {
   #ifdef WIN32
   	    char buffer[HUGE_STRING_LEN];
   #endif
   	    char *pt = ap_pstrcat(r->pool, pa_req->filename, pa_req->path_info,
  -			       NULL);
  +				  NULL);
   #ifdef WIN32
   	    /* We need to make this a real Windows path name */
   	    GetFullPathName(pt, HUGE_STRING_LEN, buffer, NULL);
  @@ -381,15 +411,17 @@
   
   
   static int scan_script_header_err_core(request_rec *r, char *buffer,
  -		 int (*getsfunc) (char *, int, void *), void *getsfunc_data)
  +				       int (*getsfunc) (char *, int, void *),
  +				       void *getsfunc_data)
   {
       char x[MAX_STRING_LEN];
       char *w, *l;
       int p;
       int cgi_status = HTTP_OK;
   
  -    if (buffer)
  +    if (buffer) {
   	*buffer = '\0';
  +    }
       w = buffer ? buffer : x;
   
       ap_hard_timeout("read script header", r);
  @@ -399,7 +431,7 @@
   	if ((*getsfunc) (w, MAX_STRING_LEN - 1, getsfunc_data) == 0) {
   	    ap_kill_timeout(r);
   	    ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r->server,
  -			"Premature end of script headers: %s", r->filename);
  +			 "Premature end of script headers: %s", r->filename);
   	    return SERVER_ERROR;
   	}
   
  @@ -407,10 +439,12 @@
   
   	p = strlen(w);
   	if (p > 0 && w[p - 1] == '\n') {
  -	    if (p > 1 && w[p - 2] == '\015')
  +	    if (p > 1 && w[p - 2] == '\015') {
   		w[p - 2] = '\0';
  -	    else
  +	    }
  +	    else {
   		w[p - 1] = '\0';
  +	    }
   	}
   
   	/*
  @@ -438,24 +472,29 @@
   	/* if we see a bogus header don't ignore it. Shout and scream */
   
   	if (!(l = strchr(w, ':'))) {
  -	    char malformed[(sizeof MALFORMED_MESSAGE) + 1 + MALFORMED_HEADER_LENGTH_TO_SHOW];
  +	    char malformed[(sizeof MALFORMED_MESSAGE) + 1
  +			   + MALFORMED_HEADER_LENGTH_TO_SHOW];
  +
   	    strcpy(malformed, MALFORMED_MESSAGE);
   	    strncat(malformed, w, MALFORMED_HEADER_LENGTH_TO_SHOW);
   
  -	    if (!buffer)
  -		/* Soak up all the script output --- may save an outright kill */
  -		while ((*getsfunc) (w, MAX_STRING_LEN - 1, getsfunc_data))
  +	    if (!buffer) {
  +		/* Soak up all the script output - may save an outright kill */
  +	        while ((*getsfunc) (w, MAX_STRING_LEN - 1, getsfunc_data)) {
   		    continue;
  +		}
  +	    }
   
   	    ap_kill_timeout(r);
   	    ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r->server,
  -			"%s: %s", malformed, r->filename);
  +			 "%s: %s", malformed, r->filename);
   	    return SERVER_ERROR;
   	}
   
   	*l++ = '\0';
  -	while (*l && isspace(*l))
  +	while (*l && isspace(*l)) {
   	    ++l;
  +	}
   
   	if (!strcasecmp(w, "Content-type")) {
   	    char *tmp;
  @@ -463,8 +502,9 @@
   	    /* Nuke trailing whitespace */
   
   	    char *endp = l + strlen(l) - 1;
  -	    while (endp > l && isspace(*endp))
  +	    while (endp > l && isspace(*endp)) {
   		*endp-- = '\0';
  +	    }
   
   	    tmp = ap_pstrdup(r->pool, l);
   	    ap_content_type_tolower(tmp);
  @@ -516,7 +556,8 @@
       return fgets(buf, len, (FILE *) f) != NULL;
   }
   
  -API_EXPORT(int) ap_scan_script_header_err(request_rec *r, FILE *f, char *buffer)
  +API_EXPORT(int) ap_scan_script_header_err(request_rec *r, FILE *f,
  +					  char *buffer)
   {
       return scan_script_header_err_core(r, buffer, getsfunc_FILE, f);
   }
  @@ -536,18 +577,24 @@
   API_EXPORT(void) ap_send_size(size_t size, request_rec *r)
   {
       /* XXX: this -1 thing is a gross hack */
  -    if (size == (size_t)-1)
  +    if (size == (size_t)-1) {
   	ap_rputs("    -", r);
  -    else if (!size)
  +    }
  +    else if (!size) {
   	ap_rputs("   0k", r);
  -    else if (size < 1024)
  +    }
  +    else if (size < 1024) {
   	ap_rputs("   1k", r);
  -    else if (size < 1048576)
  +    }
  +    else if (size < 1048576) {
   	ap_rprintf(r, "%4dk", (size + 512) / 1024);
  -    else if (size < 103809024)
  +    }
  +    else if (size < 103809024) {
   	ap_rprintf(r, "%4.1fM", size / 1048576.0);
  -    else
  +    }
  +    else {
   	ap_rprintf(r, "%4dM", (size + 524288) / 1048576);
  +    }
   }
   
   #if defined(__EMX__) || defined(WIN32)
  @@ -557,9 +604,11 @@
       char **av;
       char *w;
   
  -    for (x = 0, n = 2; args[x]; x++)
  -	if (args[x] == '+')
  +    for (x = 0, n = 2; args[x]; x++) {
  +        if (args[x] == '+') {
   	    ++n;
  +	}
  +    }
   
       /* Add extra strings to array. */
       n = n + 2;
  @@ -582,14 +631,16 @@
   #endif
   
   
  -API_EXPORT(int) ap_call_exec(request_rec *r, child_info *pinfo, char *argv0, char **env,
int shellcmd)
  +API_EXPORT(int) ap_call_exec(request_rec *r, child_info *pinfo, char *argv0,
  +			     char **env, int shellcmd)
   {
       int pid = 0;
   #if defined(RLIMIT_CPU)  || defined(RLIMIT_NPROC) || \
       defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined (RLIMIT_AS)
   
  -    core_dir_config *conf =
  -    (core_dir_config *) ap_get_module_config(r->per_dir_config, &core_module);
  +    core_dir_config *conf;
  +    conf = (core_dir_config *) ap_get_module_config(r->per_dir_config,
  +						    &core_module);
   
   #endif
   
  @@ -603,44 +654,58 @@
   #endif
   
   #ifdef RLIMIT_CPU
  -    if (conf->limit_cpu != NULL)
  -	if ((setrlimit(RLIMIT_CPU, conf->limit_cpu)) != 0)
  +    if (conf->limit_cpu != NULL) {
  +        if ((setrlimit(RLIMIT_CPU, conf->limit_cpu)) != 0) {
   	    ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"setrlimit: failed to set CPU usage limit");
  +			 "setrlimit: failed to set CPU usage limit");
  +	}
  +    }
   #endif
   #ifdef RLIMIT_NPROC
  -    if (conf->limit_nproc != NULL)
  -	if ((setrlimit(RLIMIT_NPROC, conf->limit_nproc)) != 0)
  +    if (conf->limit_nproc != NULL) {
  +        if ((setrlimit(RLIMIT_NPROC, conf->limit_nproc)) != 0) {
   	    ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"setrlimit: failed to set process limit");
  +			 "setrlimit: failed to set process limit");
  +	}
  +    }
   #endif
   #if defined(RLIMIT_AS)
  -    if (conf->limit_mem != NULL)
  -	if ((setrlimit(RLIMIT_AS, conf->limit_mem)) != 0)
  +    if (conf->limit_mem != NULL) {
  +        if ((setrlimit(RLIMIT_AS, conf->limit_mem)) != 0) {
   	    ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"setrlimit(RLIMIT_AS): failed to set memory usage limit");
  +			 "setrlimit(RLIMIT_AS): failed to set memory "
  +			 "usage limit");
  +	}
  +    }
   #elif defined(RLIMIT_DATA)
  -    if (conf->limit_mem != NULL)
  -	if ((setrlimit(RLIMIT_DATA, conf->limit_mem)) != 0)
  +    if (conf->limit_mem != NULL) {
  +        if ((setrlimit(RLIMIT_DATA, conf->limit_mem)) != 0) {
   	    ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"setrlimit(RLIMIT_DATA): failed to set memory usage limit");
  +			 "setrlimit(RLIMIT_DATA): failed to set memory "
  +			 "usage limit");
  +	}
  +    }
   #elif defined(RLIMIT_VMEM)
  -    if (conf->limit_mem != NULL)
  -	if ((setrlimit(RLIMIT_VMEM, conf->limit_mem)) != 0)
  +    if (conf->limit_mem != NULL) {
  +        if ((setrlimit(RLIMIT_VMEM, conf->limit_mem)) != 0) {
   	    ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			"setrlimit(RLIMIT_VMEM): failed to set memory usage limit");
  +			 "setrlimit(RLIMIT_VMEM): failed to set memory "
  +			 "usage limit");
  +	}
  +    }
   #endif
   
   #ifdef __EMX__
       {
   	/* Additions by Alec Kloss, to allow exec'ing of scripts under OS/2 */
   	int is_script;
  -	char interpreter[2048];	/* hope this is large enough for the interpreter path */
  +	char interpreter[2048];	/* hope it's enough for the interpreter path */
   	FILE *program;
  +
   	program = fopen(r->filename, "rt");
   	if (!program) {
   	    ap_log_error(APLOG_MARK, APLOG_ERR, r->server, "fopen(%s) failed",
  -			r->filename);
  +			 r->filename);
   	    return (pid);
   	}
   	fgets(interpreter, sizeof(interpreter), program);
  @@ -658,13 +723,14 @@
   	    char *emxtemp;
   
   	    /* For OS/2 place the variables in the current
  -	     * enviornment then it will be inherited. This way
  +	     * environment then it will be inherited. This way
   	     * the program will also get all of OS/2's other SETs.
   	     */
  -	    for (emxloop = 0; ((emxtemp = env[emxloop]) != NULL); emxloop++)
  +	    for (emxloop = 0; ((emxtemp = env[emxloop]) != NULL); emxloop++) {
   		putenv(emxtemp);
  +	    }
   
  -	    /* Additions by Alec Kloss, to allow exec'ing of scripts under OS/2 */
  +	    /* More additions by Alec Kloss for OS/2 */
   	    if (is_script) {
   		/* here's the stuff to run the interpreter */
   		execl(interpreter + 2, interpreter + 2, r->filename, NULL);
  @@ -686,26 +752,29 @@
   	     * environment so that they will be inherited. This way
   	     * the program will also get all of OS/2's other SETs.
   	     */
  -	    for (emxloop = 0; ((emxtemp = env[emxloop]) != NULL); emxloop++)
  +	    for (emxloop = 0; ((emxtemp = env[emxloop]) != NULL); emxloop++) {
   		putenv(emxtemp);
  +	    }
   
   	    if (strstr(strupr(r->filename), ".CMD") > 0) {
   		/* Special case to allow use of REXX commands as scripts. */
   		os2pathname(r->filename);
  -		execv(SHELL_PATH, create_argv_cmd(r->pool, argv0, r->args, r->filename));
  +		execv(SHELL_PATH, create_argv_cmd(r->pool, argv0, r->args,
  +						  r->filename));
   	    }
  -	    else
  +	    else {
   		execv(r->filename,
  -		    create_argv(r->pool, NULL, NULL, NULL, argv0, r->args));
  +		      create_argv(r->pool, NULL, NULL, NULL, argv0, r->args));
  +	    }
   	}
   	return (pid);
       }
   #elif defined(WIN32)
       {
  -	/* Adapted from work by Alec Kloss, to allow exec'ing of scripts under OS/2 */
  +	/* Adapted from Alec Kloss' work for OS/2 */
   	int is_script = 0;
   	int is_binary = 0;
  -	char interpreter[2048];	/* hope this is large enough for the interpreter path */
  +	char interpreter[2048];	/* hope it's enough for the interpreter path */
   	FILE *program;
   	int i, sz;
   	char *dot;
  @@ -723,32 +792,36 @@
   	interpreter[0] = 0;
   
   	exename = strrchr(r->filename, '/');
  -	if (!exename)
  +	if (!exename) {
   	    exename = strrchr(r->filename, '\\');
  -	if (!exename)
  +	}
  +	if (!exename) {
   	    exename = r->filename;
  -	else
  +	}
  +	else {
   	    exename++;
  +	}
   	dot = strrchr(exename, '.');
   	if (dot) {
  -	    if (!strcasecmp(dot, ".BAT") ||
  -		!strcasecmp(dot, ".CMD") ||
  -		!strcasecmp(dot, ".EXE") ||
  -		!strcasecmp(dot, ".COM"))
  +	    if (!strcasecmp(dot, ".BAT")
  +		|| !strcasecmp(dot, ".CMD")
  +		|| !strcasecmp(dot, ".EXE")
  +		||  !strcasecmp(dot, ".COM")) {
   		is_exe = 1;
  +	    }
   	}
   
   	if (!is_exe) {
   	    program = fopen(r->filename, "rb");
   	    if (!program) {
   		ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			    "fopen(%s) failed", r->filename);
  +			     "fopen(%s) failed", r->filename);
   		return (pid);
   	    }
   	    sz = fread(interpreter, 1, sizeof(interpreter) - 1, program);
   	    if (sz < 0) {
   		ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			    "fread of %s failed", r->filename);
  +			     "fread of %s failed", r->filename);
   		fclose(program);
   		return (pid);
   	    }
  @@ -757,9 +830,10 @@
   	    if (!strncmp(interpreter, "#!", 2)) {
   		is_script = 1;
   		for (i = 2; i < sizeof(interpreter); i++) {
  -		    if ((interpreter[i] == '\r') ||
  -			(interpreter[i] == '\n'))
  +		    if ((interpreter[i] == '\r')
  +			|| (interpreter[i] == '\n')) {
   			break;
  +		    }
   		}
   		interpreter[i] = 0;
   		for (i = 2; interpreter[i] == ' '; ++i)
  @@ -767,10 +841,11 @@
   		memmove(interpreter+2,interpreter+i,strlen(interpreter+i)+1);
   	    }
   	    else {
  -                        /* Check to see if it's a executable */
  +	        /* Check to see if it's a executable */
                   IMAGE_DOS_HEADER *hdr = (IMAGE_DOS_HEADER*)interpreter;
  -                if (hdr->e_magic == IMAGE_DOS_SIGNATURE && hdr->e_cblp <
512)
  +                if (hdr->e_magic == IMAGE_DOS_SIGNATURE && hdr->e_cblp <
512) {
                       is_binary = 1;
  +		}
   	    }
   	}
   
  @@ -935,10 +1010,10 @@
   	return (pid);
       }
   #else
  -    if (ap_suexec_enabled &&
  -	((r->server->server_uid != ap_user_id) ||
  -	 (r->server->server_gid != ap_group_id) ||
  -	 (!strncmp("/~", r->uri, 2)))) {
  +    if (ap_suexec_enabled
  +	&& ((r->server->server_uid != ap_user_id)
  +	    || (r->server->server_gid != ap_group_id)
  +	    || (!strncmp("/~", r->uri, 2)))) {
   
   	char *execuser, *grpname;
   	struct passwd *pw;
  @@ -949,49 +1024,57 @@
   	    char *username = ap_pstrdup(r->pool, r->uri + 2);
   	    char *pos = strchr(username, '/');
   
  -	    if (pos)
  +	    if (pos) {
   		*pos = '\0';
  +	    }
   
   	    if ((pw = getpwnam(username)) == NULL) {
   		ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -			    "getpwnam: invalid username %s", username);
  +			     "getpwnam: invalid username %s", username);
   		return (pid);
   	    }
   	    execuser = ap_pstrcat(r->pool, "~", pw->pw_name, NULL);
   	    user_gid = pw->pw_gid;
   
   	    if ((gr = getgrgid(user_gid)) == NULL) {
  -		if ((grpname = ap_palloc(r->pool, 16)) == NULL)
  +	        if ((grpname = ap_palloc(r->pool, 16)) == NULL) {
   		    return (pid);
  -		else
  +		}
  +		else {
   		    ap_snprintf(grpname, 16, "%ld", (long) user_gid);
  +		}
   	    }
  -	    else
  +	    else {
   		grpname = gr->gr_name;
  +	    }
   	}
   	else {
   	    if ((pw = getpwuid(r->server->server_uid)) == NULL) {
   		ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -		            "getpwuid: invalid userid %ld",
  -		            (long) r->server->server_uid);
  +			     "getpwuid: invalid userid %ld",
  +			     (long) r->server->server_uid);
   		return (pid);
   	    }
   	    execuser = ap_pstrdup(r->pool, pw->pw_name);
   
   	    if ((gr = getgrgid(r->server->server_gid)) == NULL) {
   		ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
  -		            "getgrgid: invalid groupid %ld",
  -		            (long) r->server->server_gid);
  +			     "getgrgid: invalid groupid %ld",
  +			     (long) r->server->server_gid);
   		return (pid);
   	    }
   	    grpname = gr->gr_name;
   	}
   
  -	if (shellcmd)
  -	    execle(SUEXEC_BIN, SUEXEC_BIN, execuser, grpname, argv0, NULL, env);
  +	if (shellcmd) {
  +	    execle(SUEXEC_BIN, SUEXEC_BIN, execuser, grpname, argv0,
  +		   NULL, env);
  +	}
   
  -	else if ((!r->args) || (!r->args[0]) || strchr(r->args, '='))
  -	    execle(SUEXEC_BIN, SUEXEC_BIN, execuser, grpname, argv0, NULL, env);
  +	else if ((!r->args) || (!r->args[0]) || strchr(r->args, '=')) {
  +	    execle(SUEXEC_BIN, SUEXEC_BIN, execuser, grpname, argv0,
  +		   NULL, env);
  +	}
   
   	else {
   	    execve(SUEXEC_BIN,
  @@ -1001,16 +1084,19 @@
   	}
       }
       else {
  -	if (shellcmd)
  +        if (shellcmd) {
   	    execle(SHELL_PATH, SHELL_PATH, "-c", argv0, NULL, env);
  +	}
   
  -	else if ((!r->args) || (!r->args[0]) || strchr(r->args, '='))
  +	else if ((!r->args) || (!r->args[0]) || strchr(r->args, '=')) {
   	    execle(r->filename, argv0, NULL, env);
  +	}
   
  -	else
  +	else {
   	    execve(r->filename,
   		   create_argv(r->pool, NULL, NULL, NULL, argv0, r->args),
   		   env);
  +	}
       }
       return (pid);
   #endif
  
  
  

Mime
View raw message