summaryrefslogtreecommitdiff
path: root/src/microhttpd/basicauth.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/basicauth.c')
-rw-r--r--src/microhttpd/basicauth.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/src/microhttpd/basicauth.c b/src/microhttpd/basicauth.c
index 51f9cf93..bb9e1ea4 100644
--- a/src/microhttpd/basicauth.c
+++ b/src/microhttpd/basicauth.c
@@ -117,7 +117,7 @@ MHD_queue_basic_auth_fail_response (struct MHD_Connection *connection,
const char *realm,
struct MHD_Response *response)
{
- int ret;
+ int ret, res;
size_t hlen = strlen(realm) + strlen("Basic realm=\"\"") + 1;
char *header;
@@ -130,18 +130,29 @@ MHD_queue_basic_auth_fail_response (struct MHD_Connection *connection,
#endif /* HAVE_MESSAGES */
return MHD_NO;
}
- MHD_snprintf_ (header,
- hlen,
- "Basic realm=\"%s\"",
- realm);
- ret = MHD_add_response_header (response,
- MHD_HTTP_HEADER_WWW_AUTHENTICATE,
- header);
+ res = MHD_snprintf_ (header,
+ hlen,
+ "Basic realm=\"%s\"",
+ realm);
+ if (res > 0 && res < hlen)
+ ret = MHD_add_response_header (response,
+ MHD_HTTP_HEADER_WWW_AUTHENTICATE,
+ header);
+ else
+ ret = MHD_NO;
+
free(header);
if (MHD_YES == ret)
ret = MHD_queue_response (connection,
MHD_HTTP_UNAUTHORIZED,
response);
+ else
+ {
+#ifdef HAVE_MESSAGES
+ MHD_DLOG (connection->daemon,
+ "Failed to add Basic auth header\n");
+#endif /* HAVE_MESSAGES */
+ }
return ret;
}