diff options
Diffstat (limited to 'src/lib/daemon_options.c')
-rw-r--r-- | src/lib/daemon_options.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/lib/daemon_options.c b/src/lib/daemon_options.c index 576779e3..3adee960 100644 --- a/src/lib/daemon_options.c +++ b/src/lib/daemon_options.c | |||
@@ -698,14 +698,40 @@ MHD_daemon_digest_auth_random (struct MHD_Daemon *daemon, | |||
698 | * @param daemon daemon to configure | 698 | * @param daemon daemon to configure |
699 | * @param nc_length desired array length | 699 | * @param nc_length desired array length |
700 | */ | 700 | */ |
701 | void | 701 | enum MHD_StatusCode |
702 | MHD_daemon_digest_auth_nc_length (struct MHD_Daemon *daemon, | 702 | MHD_daemon_digest_auth_nc_length (struct MHD_Daemon *daemon, |
703 | size_t nc_length) | 703 | size_t nc_length) |
704 | { | 704 | { |
705 | #if ENABLE_DAUTH | 705 | #if ENABLE_DAUTH |
706 | if ( ( (size_t) (nc_length * sizeof (struct MHD_NonceNc))) / | ||
707 | sizeof (struct MHD_NonceNc) != nc_length) | ||
708 | { | ||
709 | #ifdef HAVE_MESSAGES | ||
710 | MHD_DLOG (daemon, | ||
711 | _("Specified value for NC_SIZE too large\n")); | ||
712 | #endif | ||
713 | return MHD_DIGEST_AUTH_NC_LENGTH_TOO_BIG; | ||
714 | } | ||
715 | if (0 < nc_length) | ||
716 | { | ||
717 | if (NULL != daemon->nnc) | ||
718 | free (daemon->nnc); | ||
719 | daemon->nnc = malloc (daemon->nonce_nc_size * | ||
720 | sizeof (struct MHD_NonceNc)); | ||
721 | if (NULL == daemon->nnc) | ||
722 | { | ||
723 | #ifdef HAVE_MESSAGES | ||
724 | MHD_DLOG (daemon, | ||
725 | _("Failed to allocate memory for nonce-nc map: %s\n"), | ||
726 | MHD_strerror_ (errno)); | ||
727 | #endif | ||
728 | return MHD_DIGEST_AUTH_NC_ALLOCATION_FAILURE; | ||
729 | } | ||
730 | } | ||
706 | daemon->digest_nc_length = nc_length; | 731 | daemon->digest_nc_length = nc_length; |
732 | return MHD_SC_OK; | ||
707 | #else | 733 | #else |
708 | MHD_PANIC ("digest authentication not supported by this build"); | 734 | return MHD_DIGEST_AUTH_NOT_SUPPORTED_BY_BUILD; |
709 | #endif | 735 | #endif |
710 | } | 736 | } |
711 | 737 | ||