[OpenAFS-devel] Problem with ka_GetAdminToken

giuseppe sala papavero64@yahoo.it
Thu, 27 Jan 2005 08:38:04 -0800 (PST)


Hi,
I want to modify the module
.....\src\WINNT\win9xpanel\WinAfsLoadDlg.cpp  in the
openafs-1.2.2b for giving the possibility to a user to
change the password, but when execute the function
ka_GetAdminToken the program crash!
WinAFSLoad run under win98
There is someone that can say to me like using that
function?

this is my program:

#include "stdafx.h"


#ifdef _MFC_VER
extern "C" {
#endif
#include <direct.h>
#include <afs\param.h>
#include <afs\stds.h>
#include <afs\kautils.h>
#include "cm_config.h"
#include "cmd.h"
#ifdef _MFC_VER
	}
#endif


#include "WinAfsLoad.h"
#include "WinAfsLoadDlg.h"
#include "modver.h"
#include "encript.h"
#include <winreg.h>
#include "change.h"
#include "cregkey.h"
#include "force.h"
#include "retry.h"
#include <Lmcons.h>
#include "settings.h"
#include "afsmsg95.h"
#include "ProgBarDlg.h"
#include "MyFrame.h"
#include "commandsettings.h"



void CWinAfsLoadDlg::OnChangePasswd() 
{
CChgPswdDlg 		 dlg;
char 			 chgpswd_cell[256];
char 		 	 realm[256];
struct ktc_encryptionKey key;
register des_cblock	 mitkey;
struct ktc_encryptionKey newkey;
register des_cblock	 newmitkey;
struct ktc_token	 token;

#define PCCHAR(str)	((char *)((const char *)str))
#define ADMIN_LIFETIME (KTC_TIME_UNCERTAINTY+1)

#ifdef DEFAULT_MITV4_STRINGTOKEY
    int dess2k = 1;
#elif DEFAULT_AFS_STRINGTOKEY
    int dess2k = 0;
#else
    int dess2k = -1;
#endif
	dlg.m_sNameUser=m_sUsername;

	if (dlg.DoModal()==IDOK)
	{
		if (dlg.m_sNameUser=="")
		{
			HandleError("You must write the username!");
			dlg.m_cNameUser.SetFocus();
		}
		else if (dlg.m_sOldPassword=="")
		{
			HandleError("You must write the old password!");
			dlg.m_cOldPassword.SetFocus();
		}
		else if (dlg.m_sNewPassword=="")
		{
			HandleError("You must write the new password!");
			dlg.m_cNewPassword.SetFocus();
		}
		else if (dlg.m_sNewPassword1=="")
		{
			HandleError("You must re-write the new password!");
			dlg.m_cNewPassword1.SetFocus();
		}
		else if (dlg.m_sNewPassword1 != dlg.m_sNewPassword)
		{
			HandleError("New password - Mismatch!");
			dlg.m_cNewPassword1.SetFocus();
		}
		else
		{
			long code = cm_GetRootCellName(chgpswd_cell);
			if (code < 0)
				HandleError("Failed to get local cell name");
			else
			{
 				code = ka_Init(0);
 				if(code) {
					HandleError("Failed to connect to local cell");
		 		}
 
    				ka_StringToKey (PCCHAR(dlg.m_sOldPassword),
chgpswd_cell, &key);
    				des_string_to_key(PCCHAR(dlg.m_sOldPassword),
&mitkey);
    				ka_StringToKey (PCCHAR(dlg.m_sNewPassword),
chgpswd_cell, &newkey);
    				des_string_to_key(PCCHAR(dlg.m_sNewPassword),
&newmitkey);
    				code = ka_GetAdminToken
(PCCHAR(dlg.m_sNameUser), 0, chgpswd_cell,
			     		&key, ADMIN_LIFETIME, &token, /*!new*/0);
 		
IN THIS POINT THE PROGRAM CRASH.


		
__________________________________ 
Do you Yahoo!? 
Read only the mail you want - Yahoo! Mail SpamGuard. 
http://promotions.yahoo.com/new_mail