@@ -469,7 +469,7 @@ mhdrslt cls_webu_ans::mhd_digest_fail(int signal_stale)
469469/* Perform digest authentication */
470470mhdrslt cls_webu_ans::mhd_digest ()
471471{
472- enum MHD_DigestAuthResult retcd;
472+ int retcd;
473473 char *username;
474474 std::string chkuser;
475475
@@ -483,44 +483,34 @@ mhdrslt cls_webu_ans::mhd_digest()
483483 if (chkuser == " " ) {
484484 return mhd_digest_fail (MHD_NO);
485485 } else if (auth_admin_name == chkuser) {
486- retcd = MHD_digest_auth_check3 (connection
486+ retcd = MHD_digest_auth_check (connection
487487 , auth_realm
488488 , auth_admin_name.c_str ()
489489 , auth_admin_pass.c_str ()
490- , 0 , 0
491- , MHD_DIGEST_AUTH_MULT_QOP_AUTH
492- , MHD_DIGEST_AUTH_MULT_ALGO3_ANY);
490+ , 300 );
493491 is_admin = true ;
494492 } else if (auth_user_name == chkuser) {
495- retcd = MHD_digest_auth_check3 (connection
493+ retcd = MHD_digest_auth_check (connection
496494 , auth_realm
497495 , auth_user_name.c_str ()
498496 , auth_user_pass.c_str ()
499- , 0 , 0
500- , MHD_DIGEST_AUTH_MULT_QOP_AUTH
501- , MHD_DIGEST_AUTH_MULT_ALGO3_ANY);
497+ , 300 );
502498 is_admin = false ;
503499 } else {
504500 failauth_log (true );
505501 return mhd_digest_fail (MHD_NO);
506502 }
507503
508- if (retcd == MHD_DAUTH_OK) {
509- authenticated = true ;
510- return MHD_YES;
511- } else if (retcd == MHD_DAUTH_WRONG_USERNAME) {
512- failauth_log (true );
513- return mhd_digest_fail (MHD_NO);
514- } else if (retcd == MHD_DAUTH_RESPONSE_WRONG) {
504+ if (retcd == MHD_NO) {
515505 failauth_log (false );
516- return mhd_digest_fail (MHD_NO);
517- } else if ((retcd == MHD_DAUTH_NONCE_STALE) ||
518- (retcd == MHD_DAUTH_NONCE_OTHER_COND) ||
519- (retcd == MHD_DAUTH_NONCE_WRONG)) {
520- return mhd_digest_fail (MHD_INVALID_NONCE);
521- } else {
522- return mhd_digest_fail (MHD_NO);
523506 }
507+
508+ if ( (retcd == MHD_INVALID_NONCE) || (retcd == MHD_NO) ) {
509+ return mhd_digest_fail (retcd);
510+ }
511+
512+ authenticated = true ;
513+ return MHD_YES;
524514}
525515
526516/* Create a authorization denied response to user*/
@@ -555,20 +545,21 @@ mhdrslt cls_webu_ans::mhd_basic_fail()
555545/* Perform Basic Authentication. */
556546mhdrslt cls_webu_ans::mhd_basic ()
557547{
558- struct MHD_BasicAuthInfo *authinfo;
559548 std::string chkuser, chkpass;
560-
561- authinfo = MHD_basic_auth_get_username_password3 (connection);
562- if (authinfo == NULL ) {
563- return mhd_basic_fail ();
564- }
565- chkuser = authinfo->username ;
566- chkpass = authinfo->password ;
567- MHD_free (authinfo);
568-
569- if ((chkuser == " " ) || (chkpass == " " )) {
549+ char *user, *pass;
550+
551+ user = NULL ;
552+ pass = NULL ;
553+ user = MHD_basic_auth_get_username_password (connection, &pass);
554+ if ((user == NULL ) || (pass == NULL )) {
555+ myfree (user);
556+ myfree (pass);
570557 return mhd_basic_fail ();
571558 }
559+ chkuser = user;
560+ chkpass = pass;
561+ myfree (user);
562+ myfree (pass);
572563
573564 if ((chkuser == auth_admin_name) &&
574565 (chkpass == auth_admin_pass)) {
@@ -589,7 +580,6 @@ mhdrslt cls_webu_ans::mhd_basic()
589580 }
590581 return mhd_basic_fail ();
591582 }
592-
593583}
594584
595585/* Parse apart the user:pass provided*/
0 commit comments