summaryrefslogtreecommitdiff
path: root/package/uhttpd/src
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-04-24 11:07:41 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-04-24 11:07:41 +0000
commit3df8df720a35269b0aa69d3cc4fd7288b5445aa0 (patch)
treea913b6f17e9ca741f5383958e07c79d01d2c01a3 /package/uhttpd/src
parente9dcaa6a1394c41d34ab2db49eb8e7df52347130 (diff)
downloadmtk-20170518-3df8df720a35269b0aa69d3cc4fd7288b5445aa0.zip
mtk-20170518-3df8df720a35269b0aa69d3cc4fd7288b5445aa0.tar.gz
mtk-20170518-3df8df720a35269b0aa69d3cc4fd7288b5445aa0.tar.bz2
uhttpd: - ignore authentication realms that refer to user accounts with no password set yet (X-Wrt compatibility) - fix off-by-one in CGI header parsing, fixes cgi programs that emit bad header lines (AsteriskGUI compatibility) - bump version
SVN-Revision: 21121
Diffstat (limited to 'package/uhttpd/src')
-rw-r--r--package/uhttpd/src/uhttpd-cgi.c2
-rw-r--r--package/uhttpd/src/uhttpd-utils.c8
-rw-r--r--package/uhttpd/src/uhttpd.c4
3 files changed, 9 insertions, 5 deletions
diff --git a/package/uhttpd/src/uhttpd-cgi.c b/package/uhttpd/src/uhttpd-cgi.c
index 1a6c6ad..855a72f 100644
--- a/package/uhttpd/src/uhttpd-cgi.c
+++ b/package/uhttpd/src/uhttpd-cgi.c
@@ -68,7 +68,7 @@ static struct http_response * uh_cgi_header_parse(char *buf, int len, int *off)
if( (pos < len) && (buf[pos] == '\n') )
pos++;
- if( pos < len )
+ if( pos <= len )
{
if( (hdrcount + 1) < array_size(res.headers) )
{
diff --git a/package/uhttpd/src/uhttpd-utils.c b/package/uhttpd/src/uhttpd-utils.c
index 96c0b82..caa6b12 100644
--- a/package/uhttpd/src/uhttpd-utils.c
+++ b/package/uhttpd/src/uhttpd-utils.c
@@ -622,10 +622,14 @@ struct auth_realm * uh_auth_add(char *path, char *user, char *pass)
min(strlen(pass), sizeof(new->pass) - 1));
}
- uh_realm_count++;
+ if( new->pass[0] )
+ {
+ uh_realm_count++;
+ return new;
+ }
}
- return new;
+ return NULL;
}
int uh_auth_check(
diff --git a/package/uhttpd/src/uhttpd.c b/package/uhttpd/src/uhttpd.c
index 9de77c8..152e0b4 100644
--- a/package/uhttpd/src/uhttpd.c
+++ b/package/uhttpd/src/uhttpd.c
@@ -71,8 +71,8 @@ static void uh_config_parse(const char *path)
if( !uh_auth_add(line, user, pass) )
{
fprintf(stderr,
- "Can not manage more than %i basic auth realms, "
- "will skip the rest\n", UH_LIMIT_AUTHREALMS
+ "Notice: No password set for user %s, ignoring "
+ "authentication on %s\n", user, line
);
break;