Skip to content

Commit ff4167e

Browse files
committed
fix(gss): fix issue with memory corruption
1 parent b772dde commit ff4167e

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

src/kerberos_gss.cc

+13-5
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,12 @@ gss_result* authenticate_user_krb5pwd(const char* user,
638638
char* name = NULL;
639639
char* p = NULL;
640640

641+
// for verify
642+
krb5_creds creds;
643+
krb5_get_init_creds_opt gic_options;
644+
krb5_error_code verifyRet;
645+
char *vName = NULL;
646+
641647
code = krb5_init_context(&kcontext);
642648
if (code) {
643649
result =
@@ -679,11 +685,13 @@ gss_result* authenticate_user_krb5pwd(const char* user,
679685
}
680686

681687
// verify krb5 user
682-
krb5_creds creds;
683-
krb5_get_init_creds_opt gic_options;
684-
krb5_error_code verifyRet;
685-
686688
memset(&creds, 0, sizeof(creds));
689+
690+
verifyRet = krb5_unparse_name(kcontext, client, &vName);
691+
if (verifyRet == 0) {
692+
free(vName);
693+
}
694+
687695
krb5_get_init_creds_opt_init(&gic_options);
688696
verifyRet = krb5_get_init_creds_password(
689697
kcontext, &creds, client, (char*)pswd, NULL, NULL, 0, NULL, &gic_options);
@@ -761,7 +769,7 @@ static gss_result* gss_error_result_with_message(const char* message) {
761769
static gss_result* gss_error_result_with_message_and_code(const char* message, int code) {
762770
gss_result* result = (gss_result*)malloc(sizeof(gss_result));
763771
result->code = AUTH_GSS_ERROR;
764-
result->message = (char*)malloc(strlen(message) + 5);
772+
result->message = (char*)malloc(strlen(message) + 20);
765773
sprintf(result->message, "%s (%d)", message, code);
766774
return result;
767775
}

0 commit comments

Comments
 (0)