diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2010-04-24 11:07:41 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2010-04-24 11:07:41 +0000 |
commit | 3df8df720a35269b0aa69d3cc4fd7288b5445aa0 (patch) | |
tree | a913b6f17e9ca741f5383958e07c79d01d2c01a3 | |
parent | e9dcaa6a1394c41d34ab2db49eb8e7df52347130 (diff) | |
download | master-31e0f0ae-3df8df720a35269b0aa69d3cc4fd7288b5445aa0.tar.gz master-31e0f0ae-3df8df720a35269b0aa69d3cc4fd7288b5445aa0.tar.bz2 master-31e0f0ae-3df8df720a35269b0aa69d3cc4fd7288b5445aa0.zip |
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
-rw-r--r-- | package/uhttpd/Makefile | 2 | ||||
-rw-r--r-- | package/uhttpd/src/uhttpd-cgi.c | 2 | ||||
-rw-r--r-- | package/uhttpd/src/uhttpd-utils.c | 8 | ||||
-rw-r--r-- | package/uhttpd/src/uhttpd.c | 4 |
4 files changed, 10 insertions, 6 deletions
diff --git a/package/uhttpd/Makefile b/package/uhttpd/Makefile index 0f267be2af..0dcc6a900b 100644 --- a/package/uhttpd/Makefile +++ b/package/uhttpd/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=uhttpd -PKG_RELEASE:=8 +PKG_RELEASE:=9 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) diff --git a/package/uhttpd/src/uhttpd-cgi.c b/package/uhttpd/src/uhttpd-cgi.c index 1a6c6ad4fe..855a72f569 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 96c0b82cda..caa6b12bc6 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 9de77c814d..152e0b452a 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; |