projects
/
oweals
/
busybox.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
volume_id: Adopt to new kbuild style.
[oweals/busybox.git]
/
networking
/
httpd.c
diff --git
a/networking/httpd.c
b/networking/httpd.c
index f233cb0ba8035c095df213418f9b89dba0ff31f8..cef9b8baf8de4c8e3717f2b60497308542b8cd47 100644
(file)
--- a/
networking/httpd.c
+++ b/
networking/httpd.c
@@
-796,9
+796,9
@@
static void parse_conf(const char *path, int flag)
/* the line is not recognized */
config_error:
bb_error_msg("config error '%s' in '%s'", buf, filename);
/* the line is not recognized */
config_error:
bb_error_msg("config error '%s' in '%s'", buf, filename);
-
} /* while (fgets) */
+ } /* while (fgets) */
-
fclose(f);
+ fclose(f);
}
#if ENABLE_FEATURE_HTTPD_ENCODE_URL_STR
}
#if ENABLE_FEATURE_HTTPD_ENCODE_URL_STR
@@
-1414,7
+1414,7
@@
static void send_cgi_and_exit(
if (script != url) { /* paranoia */
*script = '\0';
if (chdir(url + 1) != 0) {
if (script != url) { /* paranoia */
*script = '\0';
if (chdir(url + 1) != 0) {
- bb_perror_msg("c
hdir(%s)
", url + 1);
+ bb_perror_msg("c
an't change directory to '%s'
", url + 1);
goto error_execing_cgi;
}
// not needed: *script = '/';
goto error_execing_cgi;
}
// not needed: *script = '/';
@@
-1594,7
+1594,7
@@
static NOINLINE void send_file_and_exit(const char *url, int what)
}
range_len = MAXINT(off_t);
if (range_start >= 0) {
}
range_len = MAXINT(off_t);
if (range_start >= 0) {
- if (!range_end) {
+ if (!range_end
|| range_end > file_size - 1
) {
range_end = file_size - 1;
}
if (range_end < range_start
range_end = file_size - 1;
}
if (range_end < range_start
@@
-1676,7
+1676,7
@@
static int checkPermIP(void)
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
#if ENABLE_FEATURE_HTTPD_BASIC_AUTH
-# if ENABLE_
FEATURE_HTTPD_AUTH_MD5 && ENABLE_
PAM
+# if ENABLE_PAM
struct pam_userinfo {
const char *name;
const char *pw;
struct pam_userinfo {
const char *name;
const char *pw;
@@
-1708,9
+1708,9
@@
static int pam_talker(int num_msg,
case PAM_PROMPT_ECHO_OFF:
s = userinfo->pw;
break;
case PAM_PROMPT_ECHO_OFF:
s = userinfo->pw;
break;
- case PAM_ERROR_MSG:
- case PAM_TEXT_INFO:
- s = "";
+ case PAM_ERROR_MSG:
+ case PAM_TEXT_INFO:
+ s = "";
break;
default:
free(response);
break;
default:
free(response);
@@
-1842,7
+1842,9
@@
static int check_user_passwd(const char *path, char *user_and_passwd)
if (passwd[0] == '$' && isdigit(passwd[1])) {
char *encrypted;
if (passwd[0] == '$' && isdigit(passwd[1])) {
char *encrypted;
+# if !ENABLE_PAM
check_encrypted:
check_encrypted:
+# endif
/* encrypt pwd from peer and check match with local one */
encrypted = pw_encrypt(
/* pwd (from peer): */ colon_after_user + 1,
/* encrypt pwd from peer and check match with local one */
encrypted = pw_encrypt(
/* pwd (from peer): */ colon_after_user + 1,
@@
-1962,7
+1964,9
@@
static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
send_headers_and_exit(HTTP_BAD_REQUEST);
/* Determine type of request (GET/POST) */
send_headers_and_exit(HTTP_BAD_REQUEST);
/* Determine type of request (GET/POST) */
- urlp = strpbrk(iobuf, " \t");
+ // rfc2616: method and URI is separated by exactly one space
+ //urlp = strpbrk(iobuf, " \t"); - no, tab isn't allowed
+ urlp = strchr(iobuf, ' ');
if (urlp == NULL)
send_headers_and_exit(HTTP_BAD_REQUEST);
*urlp++ = '\0';
if (urlp == NULL)
send_headers_and_exit(HTTP_BAD_REQUEST);
*urlp++ = '\0';
@@
-1980,7
+1984,8
@@
static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr)
if (strcasecmp(iobuf, request_GET) != 0)
send_headers_and_exit(HTTP_NOT_IMPLEMENTED);
#endif
if (strcasecmp(iobuf, request_GET) != 0)
send_headers_and_exit(HTTP_NOT_IMPLEMENTED);
#endif
- urlp = skip_whitespace(urlp);
+ // rfc2616: method and URI is separated by exactly one space
+ //urlp = skip_whitespace(urlp); - should not be necessary
if (urlp[0] != '/')
send_headers_and_exit(HTTP_BAD_REQUEST);
if (urlp[0] != '/')
send_headers_and_exit(HTTP_BAD_REQUEST);